Предотвращение XSS-атак по всему сайту

Мне нужно рассмотреть довольно большой проект.Net 4.0 и пересмотреть, чтобы предотвратить атаки XSS. Первое, что я сделал, чтобы включить requestValidation для сайта, есть ли что-нибудь еще, что я могу сделать на глобальном уровне, или это будет случай просмотра каждой страницы, проверки ввода и html-кодирования вывода.

Есть много страниц, и, вероятно, 300 классических страниц asp все еще используются.

Безопасно ли использовать HtmlEncode() или мне нужно установить пакет Microsoft AntiXSS.

1 ответ

Решение

requestValidation это хороший подход.

  1. На глобальном уровне я могу подумать еще о том, чтобы включить заголовок X-XSS-Protection для всех ответов HTTP. Он прост в реализации и предоставляет некоторые собственные средства защиты, которые браузер (IE 8+, Chrome) может предложить на основе шаблонов xss. X-XSS-Protection: 1; mode=block

  2. Вы можете взглянуть на Content-Security-Policy, но я думаю, что в вашем сценарии это может быть большой разворот для всего сайта.

Это то, о чем я мог подумать, основываясь на смягчении XSS на основе HTTP-заголовка. Они носят общий характер и не относятся только к ASP.Net.

Отвечая на другой ваш вопрос Is HtmlEncode() safe to use or do I need to install Microsofts AntiXSS package В чем выгода превращения encoderType в AntiXssEncoder в приложении MVC?

AntiXssEncoder использует подход белого списка для выявления вредоносных входных данных [входных данных, которые приводят к межсайтовому скриптингу (XSS)].

Кодер по умолчанию в ASP.Net использует черный список.

Оба выводят кодирование данных. С точки зрения безопасности для выявления злого умысла всегда следует использовать подход на основе белого списка, а не черный.

Выдержка из http://weblogs.asp.net/jongalloway/using-antixss-4-1-beta-as-the-default-encoder-in-asp-net

1.AntiXSS по своей природе более безопасен благодаря использованию подхода белого списка. Во многих аудитах и ​​сертификациях безопасности вам потребуется использовать XSS-кодировщик белого списка, поскольку черный список всегда потенциально уязвим для неизвестных атак.

2. В более новые браузеры встроена лучшая фильтрация XSS, но в более старых браузерах есть уязвимости (например, переключатель кодировки UTF-7), которые не будут обнаружены кодировщиком ASP.NET по умолчанию.

Другие вопросы по тегам