1)这篇文章可能会帮助您更好地理解 validaterequest:
https ://infosecauditor.wordpress.com/2013/05/27/bypassing-asp-net-validaterequest-for-script-injection-attacks/
一些摘录:
ValidateRequest 存在于 ASP.NET 版本 1、2 和 3 中。ASP.NET 版本 4 不使用 ValidateRequest 过滤器。
ValidateRequest 验证用户输入并在满足以下条件时返回 false:
<a-z – A ‘<’ character followed by an alpha character.
<!, </, <? – A ‘<’ character followed by a special character.
&,# – A special character.
您可以编写自己的自定义验证器,扩展 RequestValidator 并处理这些事情。
例如:
2)
Is there any way to show error on the same page
是的。但随后您将不得不自己验证输入并告别 asp.net 的好处https://gargmanoj.wordpress.com/tag/httprequestvalidationexception/
不,因为发生了应用程序错误并且 asp.net 已停止处理它。但是您绝对可以显示自定义错误页面。
在此处和此处查看答案:
protected void Application_Error(object sender, EventArgs e)
{
var context = HttpContext.Current;
var exception = context.Server.GetLastError();
if (exception is HttpRequestValidationException)
{
HttpContext.Current.Server.ClearError();
HttpContext.Current.Response.Redirect("~/ErrorPage.aspx");
return;
}
}
AntiXss编码器类还有一个用于对输出值进行编码的选项。
<httpRuntime encoderType="System.Web.Security.AntiXss.AntiXssEncoder" />