Есть ли способ попросить ASP.NET повторно проверить ввод, если вход был проверен один раз для запроса? HttpRequest.ValidateInput , похоже, не помогает.
Следующий код иллюстрирует проблему:
string Foo(HttpRequest request)
{
try
{
var form = request.Form; // @1
// ...do something with form...
}
catch (HttpRequestValidationException)
{
// ...handling...
// then re-flag validation
request.ValidateInput(); // @2
}
return request.Form["comment"]; // @3
}
Предположим, что отправлена форма, содержащая поле формы с содержимым HTML, которое не пройдет проверку ввода ASP.NET. При обращении к коллекции Form
(@ 1) ASP.NET выдаст HttpRequestValidationException
. Однако обработчик catch
снова запрашивает проверку (@ 2). Согласно документам, ValidateInput не вступает в силу немедленно. Вместо этого он указывает, что проверка должна иметь место при следующем доступе к защищенным битам запроса (например, к коллекции Forms
). Однако при повторном обращении к коллекции Form
исключение не возникает (@ 3).