Нет (и не может быть) одного инструмента, который вы можете развернуть, и вам больше никогда не придется думать о безопасности снова. Развертывание «анти-XSS» хаков, таких как CakePHP Sanitize::clean
, будет мешать пользователям блокировать допустимый ввод, но при этом не обязательно делать приложение безопасным. Взломы входной фильтрации в лучшем случае являются меркой запутывания, а не исправлением дыр в безопасности.
Чтобы иметь безопасное веб-приложение, вы должны написать безопасное веб-приложение с нуля. Это означает, прежде всего, внимание к деталям, когда вы помещаете строки из одного контекста в другой. В частности:
каждый раз, когда вы записываете строку в текстовое содержимое HTML или значение атрибута, HTML-экранируйте его (htmlspecialchars()
), чтобы избежать внедрения HTML-кода в XSS. Это не просто вопрос пользовательского ввода, который может содержать атаки, это правильный способ поместить простой текст в HTML.
Если вы используете вспомогательные методы HTML, они должны по умолчанию заботиться о экранировании этих элементов в HTML (если вы не отключите escape
); очень прискорбно, что в учебнике CakePHP есть недопустимая практика вывода неэкранированных строк в HTML для текста вне помощников HTML.
в любое время, когда вы создаете SQL-запросы со строковыми значениями, избегайте их SQL (с соответствующей функцией для вашей базы данных, такой как mysql_real_escape_string
).
Если вы используете ORM CakePHP и не пишете свой собственный SQL, вам не нужно об этом беспокоиться.
избегайте использования пользовательского ввода (например, имен файлов для загрузки) для именования файлов в файловой системе (вместо этого генерируйте чистые уникальные идентификаторы) или в качестве любой части команды system()
.
включает компонент Security для добавления схемы токенов отправки формы, которая предотвращает XSRF в формах, созданных CakePHP.