Что на самом деле делает requestValidationMode =»2.0″?

#asp.net-mvc #validation #asp.net-mvc-3 #asp.net-mvc-validation

#asp.net-mvc #проверка #asp.net-mvc-3 #asp.net-mvc-validation

Вопрос:

Я пытаюсь решить «Потенциально опасный запрос.Значение формы было обнаружено из-за проблемы клиента, и SO answers и Скотт Хансельман рекомендуют установить

 <httpRuntime requestValidationMode="2.0" />
  

в Web.config (наряду с добавлением атрибута к проблемным методам).
Я понимаю, что это изменяет режим проверки на ASP.NET 2.0, но что это значит?
А также, имеет ли это изменение какие-либо побочные эффекты, о которых я должен знать?

Спасибо.

Ответ №1:

Ознакомьтесь с описанием в разделе HttpRuntimeSection MSDN.Свойство requestValidationMode.

2.0. Проверка запроса включена только для страниц, а не для всех HTTP-запросов. Кроме того, параметры проверки запроса элемента pages (если таковые имеются) в файле конфигурации или директивы @ Page на отдельной странице используются для определения того, какие запросы страницы следует проверять.

Ответ №2:

Взгляните на ASP.NET Проверка запроса>

Функция проверки запроса в ASP.NET обеспечивает определенный уровень защиты по умолчанию от атак с использованием межсайтового скриптинга (XSS). В предыдущих версиях ASP.NET проверка запроса была включена по умолчанию. Однако это применялось только к ASP.NET страницы (файлы.aspx и их файлы классов) и только тогда, когда эти страницы выполнялись.

В ASP.NET 4, по умолчанию проверка запроса включена для всех запросов, потому что она включена перед фазой BeginRequest HTTP-запроса. В результате проверка запроса применяется ко всем запросам ASP.NET ресурсы, а не только запросы страниц .aspx. Сюда входят такие запросы, как вызовы веб-служб и пользовательские обработчики HTTP. Проверка запроса также активна, когда пользовательские HTTP-модули считывают содержимое HTTP-запроса.

В результате теперь могут возникать ошибки проверки запроса для запросов, которые ранее не вызывали ошибок. Чтобы вернуться к поведению ASP.NET функция проверки запроса 2.0, добавьте следующий параметр в файл Web.config:

 <httpRuntime requestValidationMode="2.0" />
  

Тем не менее, мы рекомендуем вам проанализировать любые ошибки проверки запроса
чтобы определить, существуют ли существующие обработчики, модули или другой пользовательский код
обращается к потенциально небезопасным HTTP-входам, которые могут быть XSS-атакой
векторы.