Cakephp Security - PullRequest
       30

Cakephp Security

9 голосов
/ 06 октября 2010

Я новичок в области безопасности веб-приложений.Я занимаюсь разработкой приложения на Cakephp, и один из моих друзей рассказал мне об атаках подделки межсайтовых запросов (CSRF), межсайтовых сценариев (XSS) и т. Д., Не уверен, сколько их еще.нужна помощь в понимании того, как заставить Cakephp защитить мое веб-приложение от них.у нас низкий бюджет, и мы не можем нанять консультанта по безопасности на данный момент.Мы все еще разрабатываем приложение и планируем выпустить его к концу месяца.так что хочу позаботиться о начальных вещах, которые могут помочь мне встать без взлома;)

Ответы [ 2 ]

17 голосов
/ 06 октября 2010

Нет (и не может быть) одного инструмента, который вы можете развернуть, и вам больше никогда не придется думать о безопасности снова. Развертывание «анти-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.

4 голосов
/ 06 октября 2010

Cake можно обеспечить относительно легко (по сравнению с собственно написанными PHP-скриптами): http://www.dereuromark.de/2010/10/05/cakephp-security/

...