Меры по предотвращению уязвимости XSS (например, Twitter за несколько дней до этого) - PullRequest
6 голосов
/ 03 мая 2009

Даже такие известные сайты, как Twitter, страдают от уязвимости XSS, что мы должны сделать, чтобы предотвратить подобные атаки?

Ответы [ 3 ]

8 голосов
/ 03 мая 2009

Первое, что вы можете сделать, это установить для файлов cookie только HTTP ... что, по крайней мере, защищает от перехвата файлов cookie сеанса. Как кто-то, кто крадет ваши куки, когда вы, вероятно, администратор своего сайта.

Остальное сводится к проверке всего пользовательского ввода.

  • ПРАВИЛО № 0 - Никогда не вставляйте ненадежные данные, за исключением разрешенных расположений
  • ПРАВИЛО № 1 - HTML Escape перед вставкой ненадежных данных в содержимое элемента HTML
  • ПРАВИЛО № 2 - Сброс атрибута перед вставкой ненадежных данных в общие атрибуты HTML
  • ПРАВИЛО № 3 - JavaScript сбрасывается перед вставкой ненадежных данных в HTML-значения данных JavaScript
  • ПРАВИЛО № 4 - CSS Escape перед вставкой ненадежных данных в значения свойств стиля HTML
  • ПРАВИЛО № 5 - удаление URL-адреса перед вставкой ненадежных данных в атрибуты URL-адреса HTML

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

http://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet

http://www.owasp.org/index.php/Cross_site_scripting

XSS - только один из многих эксплойтов, и каждый веб-разработчик должен выучить 10 лучших OWASP наизусть imho

http://www.owasp.org/index.php/Top_10_2007

2 голосов
/ 26 мая 2009

Так же, как вы можете сделать внедрение SQL без проблем с помощью подготовленных операторов, вы можете сделать XSS без проблем с помощью механизма шаблонов (DOM serializer), который делает то же самое.

Создайте свое приложение так, чтобы весь вывод проходил через шаблонизатор. Сделать так, чтобы движок шаблонов HTML-экранировал все данные по умолчанию. Таким образом, вы получите систему, которая по умолчанию безопасна и не полагается на то, что люди (и остальная часть большой системы) старательно избегают HTML.

0 голосов
/ 03 мая 2009

Я не знаю, с чем вы пишете свой код, но если вы используете asp.net, вы частично охвачены. У asp.net есть то, что они называют проверкой запросов, что, когда включено, предотвращает ввод вредоносного скрипта через пользовательский ввод.

Но иногда вам придется разрешить какой-нибудь текстовый редактор, подобный тому, который вы напечатали в этом вопросе. В этом случае вам придется частично отключить проверку запросов, чтобы конечный пользователь мог вводить некоторые «расширенные текстовые» html. В этом случае вам придется создать какой-то механизм фильтрации белого списка.

К вашему сведению, я не знаю о других, но у Microsft есть библиотека Anti-Xss.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...