自定义错误页面中的AspxErrorPath

时间:2011-01-18 16:23:41

标签: c# asp.net security error-handling redirect

我们目前有一个页面,用于在我们的网站上发生错误时显示一般错误消息。除了显示提到错误的标签外,它没有任何功能。

这是我的问题,我们的客户已经运行了安全审核,并告诉我们我们的错误页面包含由于查询字符串中的URL导致的网上诱骗,现在我不认为这是一个问题,而是要结束问题,我想删除查询字符串。

我的web.config条目是:

<customErrors mode="On" defaultRedirect="~/DefaultErrorPage.aspx">
</customErrors>

发生错误时,会转到 DefaultErrorPage.aspx?aspxerrorpath = / Website1 / LastPage.aspx

我该怎样防止这种情况?但是,如果它包含查询,我可以重定向到页面,但我更需要一种方法来阻止查询字符串而不是额外的重定向。

3 个答案:

答案 0 :(得分:7)

您可以捕获/处理global.asax文件中的所有错误,并在那里重定向

    protected void Application_Error(object sender, EventArgs e)
    {
        //Exception ex = Server.GetLastError();

        Server.Transfer("~/DefaultErrorPage.aspx");
    }

答案 1 :(得分:3)

作为一个快速解决方案,我发现附加“?”在删除aspxerrorpath时,我在defaultRedirect设置的末尾工作。

另外,我在system.web中遇到了与customErrors设置相同的问题,同样的解决方案也有效:

<customErrors mode="On" defaultRedirect="~/SystemError.aspx">
   <error statusCode="403" redirect="~/Home.aspx?"/>
   <error statusCode="404" redirect="~/Home.aspx?"/>
</customErrors>

或者,在system.webServer设置上执行相同的操作:

<httpErrors errorMode="Custom">
   <remove statusCode="403" subStatusCode="-1" />
   <error statusCode="403" path="/Home.aspx?" responseMode="Redirect" />
   <remove statusCode="404" subStatusCode="-1" />
   <error statusCode="404" path="/Home.aspx?" responseMode="Redirect" /> 
</httpErrors>

答案 2 :(得分:2)

您必须自己控制错误处理过程。一种方法是摆脱自定义错误重定向并在全局中使用Application_Error方法。然后,您可以根据需要指导此人,而无需任何查询字符串参数。

另一个选项是ELMAH,旨在避免ASP.NET中死亡错误的黄色屏幕。然后,您可以定制一个友好的错误,而不必担心编写错误处理代码本身。

第三种方法是向安全团队介绍ASP.NET如何工作,并查看“安全问题”是否合法(可能是)。当然,这并不意味着他们不会让你做出上述选择之一。