ASP.NET предоставляет инструменты, которые позволяют защищаться от XSS-атак, но не автоматически.Вам нужно знать, что такое атаки и как использовать инструменты для защиты от них.
Появившаяся ошибка - это настройка по умолчанию, которая пытается блокировать неверный ввод данных пользователем при входе в веб-приложение.,Это хороший шаг, но не позволяйте, если у вас будет ложное чувство безопасности .Существуют и другие способы неправильного ввода данных в ваши данные, что делает ваш сайт уязвимым.
Например, скажем, ваш сайт управляется пользовательскими данными.Написанные вами экраны ввода данных могут блокировать «потенциально опасный контент», но ничто не мешает кому-то использовать другой интерфейс для ввода данных - свой собственный интерфейс, SQL Server Management Studio и т. Д. Если они получат там плохие сценарии, ваш сайт будетс радостью представляем эти опасные сценарии пользователям.
Единственный способ защиты от XSS - это очистка данных, когда они выводятся в браузер, а НЕ когда они поступают.
НаиболееОсновной метод заключается в использовании встроенной функции Server.HtmlEncode () для очистки всех строк, поступающих из ненадежных источников.(Под ненадежным понимается что-либо, кроме строк, которые вы сами жестко запрограммировали. Базы данных, файлы и веб-службы НЕ являются доверенными источниками.)
Существуют ограничения на то, что может делать Server.HtmnlEncode.Мне лично нравится использовать библиотеку Microsoft Anti-Xss , так как она лучше работает (фильтрация белого и черного списков) и предлагает больше функций (например, GetSafehtmlFragment ()).
Естьтонны ресурсов в Интернете для этого.Я бы начал здесь:
https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet
, а затем специально для .NET:
http://msdn.microsoft.com/en-us/library/aa973813.aspx
Изменить - добавлено
Основной проблемой здесь, по-видимому, является недопонимание различий между входной фильтрацией и выходной фильтрацией.Эта статья хорошо объясняет разницу и использует лучше, чем я мог бы здесь:
http://jeremiahgrossman.blogspot.com/2007/01/input-validation-or-output-filtering.html
Окончательное редактирование, а затем я остановлюсь.
Даже Microsoft признает, что я говорю выше.См. Эту статью: http://msdn.microsoft.com/en-us/library/ms998274.aspx
из статьи:
Не полагайтесь на санацию ввода
Обычной практикой является попытка кода санировать ввод с помощьюфильтрация известных небезопасных символов.Не полагайтесь на этот подход, потому что злоумышленники обычно могут найти альтернативные способы обхода вашей проверки.Вместо этого ваш код должен проверять известные безопасные и безопасные данные.В таблице 1 показаны различные безопасные способы представления некоторых общих символов.
Проверка ввода является одним из инструментов в вашем арсенале защиты, но одного этого недостаточно.