我正在尝试修复XSS漏洞,我使用try catch块包围我的代码以处理HttpRequestValidationException
。
由于隐私原因,我无法分享整个代码。以下代码来自Page_Load()
页面的ASP.NET
方法中调用的函数。
这是我的抓手。
// A long try block was here ...
catch (HttpRequestValidationException)
{
// ASP.NET, let me handle this one.
Server.ClearError();
Response.Write(Messages.ParameterValidationError);
}
这在localhost上按预期工作,但是当我在IIS上发布代码时,从临时的asp.net类中抛出另一个HttpRequestValidationException
(见下文)。
Path to the wild class : '...\Temporary ASP.NET Files\<app_name>\5d4b8059\5739b33c\App_Web_n1jnrwmr.0.cs'
当我不使用Server.ClearError()
时,localhost也会出现此问题。
我需要显示一个用户友好的错误消息,而不是那个恼人的异常页面。
感谢任何帮助,谢谢!
答案 0 :(得分:1)
为什么不在Web配置中使用自定义错误的标准ASP.NET错误处理方法并定义自定义错误页面?如果要在global.asax中记录异常,请添加将在未处理的异常上调用的方法Application_Error(请参阅下面的代码示例)。
如果您不调用“Server.ClearError()”,那么ASP.NET将使用自定义错误中定义的错误页面并自动将您的用户重定向到那里。
protected void Application_Error(object sender, EventArgs args)
{
var exception = this.Server.GetLastError();
Logger.Log(exception);
}
<system.web>
<customErrors mode="Off" defaultRedirect="~/error/notification">
<!-- Required for HandleErrorFilter -->
<error statusCode="404" redirect="~/error/notfound" />
</customErrors>