我们目前有一个页面,用于在我们的网站上发生错误时显示一般错误消息。除了显示提到错误的标签外,它没有任何功能。
这是我的问题,我们的客户已经运行了安全审核,并告诉我们我们的错误页面包含由于查询字符串中的URL导致的网上诱骗,现在我不认为这是一个问题,而是要结束问题,我想删除查询字符串。
我的web.config条目是:
<customErrors mode="On" defaultRedirect="~/DefaultErrorPage.aspx">
</customErrors>
发生错误时,会转到 DefaultErrorPage.aspx?aspxerrorpath = / Website1 / LastPage.aspx
我该怎样防止这种情况?但是,如果它包含查询,我可以重定向到页面,但我更需要一种方法来阻止查询字符串而不是额外的重定向。
答案 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如何工作,并查看“安全问题”是否合法(可能是)。当然,这并不意味着他们不会让你做出上述选择之一。