Предотвращение XSS-атак по всему сайту
Мне нужно рассмотреть довольно большой проект.Net 4.0 и пересмотреть, чтобы предотвратить атаки XSS. Первое, что я сделал, чтобы включить requestValidation
для сайта, есть ли что-нибудь еще, что я могу сделать на глобальном уровне, или это будет случай просмотра каждой страницы, проверки ввода и html-кодирования вывода.
Есть много страниц, и, вероятно, 300 классических страниц asp все еще используются.
Безопасно ли использовать HtmlEncode() или мне нужно установить пакет Microsoft AntiXSS.
1 ответ
requestValidation
это хороший подход.
На глобальном уровне я могу подумать еще о том, чтобы включить заголовок X-XSS-Protection для всех ответов HTTP. Он прост в реализации и предоставляет некоторые собственные средства защиты, которые браузер (IE 8+, Chrome) может предложить на основе шаблонов xss.
X-XSS-Protection: 1; mode=block
Вы можете взглянуть на 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 по умолчанию.