Отметьте пункты, отмеченные (*), и это означает, что этот элемент является фундаментальным решением соответствующей проблемы, и вам следует приложить все усилия, чтобы завершить это содержание. Элементы, не отмеченные знаком (*), означают, что этот элемент не может полностью устранить угрозу безопасности, а только то, что с помощью этого метода можно избежать проблем безопасности.
SQL-инъекция
(*) Используйте функцию привязки переменных SQL при объединении операторов SQL.
(*) Если база данных не обеспечивает привязку переменных, вам необходимо экранировать все переменные, составляющие SQL, и не отображать сообщение об ошибке в браузере без изменений.
Установите соответствующие разрешения для пользователей, имеющих доступ к базе данных.
Внедрение командной строки операционной системы
(*) Избегайте использования языков, которые могут запускать команды оболочки. Если вам разрешен запуск команд оболочки, вам необходимо проверить все переменные в параметрах функции, чтобы убедиться, что включены только допустимые операции, и не проверять параметры пути/. обход каталогов.
(*) Не используйте параметры, переданные извне напрямую, в качестве имен файлов.
(*) Ограничьте операции открытия файлов фиксированными каталогами и запретите именам файлов содержать пути. Установите правильные права доступа для файлов на веб-сервере. Проверьте проблемы управления сеансами имен файлов.
(*) Используйте в качестве идентификатора сеанса контент, который трудно угадать.
(*) Не сохранять идентификатор сеанса в URL-адресе.
(*) Установите атрибут безопасности для файлов cookie, используемых в протоколе https.
(*) Создать новый сеанс после успешного входа в систему.
(*) После успешного входа в систему создайте секретную информацию в дополнение к идентификатору сеанса и проверяйте ее каждый раз, когда вы посещаете страницу. Не используйте фиксированное значение в качестве идентификатора сеанса.
При сохранении идентификатора сеанса в файле cookie установите дату истечения срока действия. Атака с использованием межсайтовых сценариев (XSS).
Решение, когда ввод HTML-контента запрещен
(*) Весь вывод на страницу должен быть экранирован
(*) При выводе URL-адресов разрешены только URL-адреса, начинающиеся с «http://» или «https://».
(*) Не создавать динамически содержимое <script>…</script>.
(*) Не читайте таблицу стилей с внешнего веб-сайта. Решение для проверки входного содержимого, когда разрешен ввод HTML-содержимого.
(*) Проанализируйте входное HTML-содержимое, сгенерируйте дерево синтаксического анализа, а затем извлеките части, не относящиеся к скриптам, для удаления соответствующих строк во входном HTML-содержимом. Общее решение.
(*) Повторно укажите атрибут charset Content-Type в HTTP-заголовке ответа. Чтобы избежать утечки информации о файлах cookie, метод Trace следует отключить и установить атрибут HttpOnly для всех подделок межсайтовых запросов. (КСРФ)
(*) Доступ ко всем страницам осуществляется через POST. Часть информации генерируется случайным образом в скрытой части предыдущей страницы. Страница после отправки проверяет информацию и выполняет ее, только если она верна.
(*) Запросите пароль еще раз перед ведением бизнеса
(*) Подтвердите правильность указания реферера. Только если он верен, выполните важные операции и отправьте электронное письмо на заданный адрес электронной почты.
Внедрение HTTP-заголовка
(*) Не выводите заголовки HTTP напрямую, а используйте API вывода информации о заголовках, предоставляемый рабочей средой.
(*) Если API невозможно использовать, разрывы строк во входной информации заголовка должны быть удалены. Кража электронной почты (с использованием некоторых средств для отправки электронных писем на адрес, указанный злоумышленником).
(*) Не используйте внешние параметры в качестве информации заголовка электронной почты. Если вам необходимо использовать внешние параметры для установки информации заголовка, удалите опасные символы.
Заявление об авторских правах: вы можете перепечатывать книгу по своему желанию, но при перепечатке необходимо указывать оригинального автора Чарли.
Исходная ссылка: http://tech.idv2.com/2008/04/19/secure-website-checklist/
Справочник по конкретной стратегии приложения: Контрольный список безопасности практики PHP