Контрольный список для уязвимостей программирования веб-сайтов - PullRequest
17 голосов
/ 26 августа 2008

Наблюдение за выходом SO в онлайн-режиме стало для меня очень полезным. Я хотел бы составить контрольный список различных уязвимостей и эксплойтов, используемых против веб-сайтов, и какие методы программирования можно использовать для защиты от них.

Ответы [ 9 ]

12 голосов
/ 27 августа 2008

Из открытого проекта безопасности веб-приложений :

  1. Уязвимость OWASP Top Ten (pdf)
  2. Для более болезненного исчерпывающего списка: Категория: Уязвимость

Десятка лучших:

  1. Межсайтовый скриптинг (XSS)
  2. Недостатки внедрения (SQL-инъекция, внедрение скрипта)
  3. Вредоносное выполнение файла
  4. Небезопасная прямая ссылка на объект
  5. Подделка межсайтовых запросов (XSRF)
  6. Утечка информации и неправильная обработка ошибок
  7. Сломанная аутентификация и управление сессиями
  8. Небезопасное криптографическое хранилище
  9. Небезопасная связь
  10. Неспособность ограничить доступ к URL
2 голосов
/ 16 сентября 2008

Некоторые методы профилактики:

XSS

  • Если вы берете какие-либо параметры / ввод от пользователя и когда-либо планируете его выводить, будь то в журнале или на веб-странице, очистите его (удалите / удалите все, что напоминает HTML, цитаты, JavaScript) Вы печатаете текущий URI страницы внутри себя, дезинфицируете! Например, даже печать PHP_SELF небезопасна. Санируйте! Отражающий XSS происходит в основном из неанизированных параметров страницы.

  • Если вы берете какие-либо данные от пользователя и сохраняете их или распечатываете, предупреждайте их, если обнаруживается что-либо опасное / недействительное, и повторяйте их ввод. IDS хорош для обнаружения (например, PHPIDS). Затем выполните санитарную обработку перед хранением / печатью. Затем, когда вы печатаете что-то из хранилища / базы данных, снова выполните санитарную обработку! Входные данные -> IDS / sanitize -> store -> sanitize -> output

  • использовать сканер кода во время разработки, чтобы помочь обнаружить потенциально уязвимый код.

XSRF

  • Никогда не использовать запрос GET для разрушительная функциональность, т.е. удаляя пост. Вместо этого только принимать запросы POST. GET облегчает взлом.
  • Проверка реферер, чтобы убедиться, что запрос пришел с вашего сайта не работа . Это не сложно подделать реферер.
  • Используйте случайный хеш в качестве токена, который должен присутствовать и действовать в каждом запросе, и срок его действия истекает через некоторое время. Распечатайте токен в скрытом поле формы и проверьте его на стороне сервера при публикации формы. Плохие парни должны будут предоставить правильный токен, чтобы подделать запрос, и если им удастся получить реальный токен, он должен быть до его истечения.

SQL-инъекция

  • в вашем классе абстракции ORM или db должны быть методы очистки - используйте их всегда. Если вы не используете класс абстракции ORM или db ... вам следует.
2 голосов
/ 26 августа 2008

Очевидно, проверьте каждое поле на наличие уязвимостей:

  • SQL - escape-строки (например, mysql_real_escape_string)
  • XSS
  • HTML печатается из полей ввода (обычно это хороший признак XSS)
  • Все, что не является конкретной целью, для которой было создано поле

Поиск бесконечных циклов (единственная косвенная вещь (если многие случайно ее обнаружили), которая действительно может убить сервер).

1 голос
/ 16 сентября 2008

Вы можете получить хорошие аддоны Firefox для тестирования множества недостатков и уязвимостей, таких как инъекции xss и sql из Security Compass . Жаль, что они не работают на Firefox 3.0. Я надеюсь, что они будут обновлены в ближайшее время.

1 голос
/ 27 августа 2008

G'day,

Хорошим инструментом статического анализа для обеспечения безопасности является FlawFinder , написанный Дэвидом Уилером. Он хорошо справляется с поиском различных мер безопасности,

Однако это не заменяет умелое чтение кем-то вашего кода. Как говорит Дэвид на своей веб-странице: «Дурак с инструментом все еще дурак!»

НТН.

веселит, Rob

1 голос
/ 27 августа 2008

Легко контролировать и легко исправить: очистка данных, полученных со стороны клиента. Проверка на такие вещи, как ';' может помочь предотвратить внедрение вредоносного кода в ваше приложение.

1 голос
/ 26 августа 2008

XSS (межсайтовый скриптинг) Атаки

1 голос
/ 26 августа 2008

SQL-инъекция

...