Что действительно делает requestValidationMode = "2.0"?
Я пытаюсь решить проблему "потенциально опасное значение Request.Form было обнаружено из проблемы клиента", а ответы SO и Scott Hanselman рекомендуют устанавливать
<httpRuntime requestValidationMode="2.0" />
в Web.config(наряду с добавлением атрибута к проблемным методам).
Я понимаю, что это меняет режим проверки на ASP.NET 2.0, но что это значит?
И также, имеет ли это изменение какие-либо побочные эффекты, о которых я должен знать?
Спасибо.
Ответы
Ответ 1
Ознакомьтесь с описанием в Свойства MSDN HttpRuntimeSection.RequestValidationMode.
2.0. Проверка запроса разрешена только для страниц, а не для всех HTTP-запросов. Кроме того, параметры проверки запроса на страницах элемент (если есть) в файле конфигурации или директивы @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 векторы.