Альтернатива ValidateRequest="false"
Есть ли способ предотвратить ошибку "потенциально опасное значение Request.Form было обнаружено от клиента", кроме настройки ValidateRequest="false"
?
Обновление: я удалил часть "на странице". Я бы не хотел использовать ValidateRequest="false"
вообще, на странице или в web.config.
4 ответа
Ознакомьтесь с новыми функциями проверки запросов ASP.NET 4.5.
Если вы установите
<httpRuntime requestValidationMode="4.5" ... />
в вашем файле web.config значения будут проверяться только при доступе к ним. Это называется отложенной проверкой.
Также вы можете получить непроверенные значения через
var s = context.Request.Unvalidated.Form["forum_post"];
Да, вы можете сделать это глобально в web.config.
Если вы используете.net 4.0, вы можете добавить это в ваш web.config
<httpRuntime requestValidationMode="2.0"/>
Или вы могли бы добавить это вместо
<pages validateRequest="false" />
1 Вы также можете добавить подтверждение JavaScript на ваш вход
2 Вы можете добавить пользовательский валидатор
Вы можете отключить его для всего приложения, отредактировав файл web.config
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
Было бы полезно узнать, хотите ли вы просто подавить ошибку, или же вы хотите предотвратить ее возникновение для начала. Если вы хотите предотвратить это, перед отправкой формы очистите свои данные (используя JavaScript или средства проверки).