如何获得一个友好的错误页面来replaceURL“WEB-INF./web.xml”的asp.net错误页面?

这个url是pci符合性扫描的一部分,它标记着返回的非常稀疏的asp.net错误页面,在实况站点上是一个500状态码和文本

“/”应用程序中的服务器错误。

运行时错误

说明:处理您的请求时发生exception。 此外,执行第一个exception的自定义错误页面时发生另一个exception。 该请求已被终止。

当在Visual Studio中运行网站时,我得到了一个404和文本

“/”应用程序中的服务器错误。

无法find该资源。

说明:HTTP 404.您正在查找的资源(或其某个依赖项)可能已被删除,名称已更改或暂时不可用。 请检查以下URL并确保拼写正确。

请求的url:/WEB-INF./web.xml

版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.18044

我试图忽略路由中的URL,并将其映射到我们的404路由/error/not-found ,我们有默认的redirect到/error/internal自定义错误。 我也尝试使用位置标记来拒绝访问,使用请求筛选来阻止它,并使用具有该path的处理程序来捕获请求。

我试过这个重写,也尝试了相同的规则阻止和redirect,但我仍然得到相同的asp.net错误页面。 图像中断,但规则是^.*\./.*$ ,它匹配我试图过滤的URL(我也尝试过简单的WEB-INF )。

重写规则

任何想法如何我可以得到这个url来显示我们的自定义错误页面?

向web.config中的httpRuntime节点添加relaxedUrlToFileSystemMapping="true" ,可以按照预期的方式通过ASP.Net MVC处理该URL。

 <system.web> <httpRuntime relaxedUrlToFileSystemMapping="true" /> </system.web> 

在IIS中,默认情况下向本地客户端显示详细的错误消息,这就是为什么您可以通过Visual Studio看到这些消息,但远程获取500错误。

要更改,请在IISpipe理器中单击受影响的站点,在function视图中单击“错误页面”,然后在右侧窗格中select“编辑function设置”。 然后,您可以select“自定义错误页面”并按照这种方式进行configuration。

编辑:Tomcat也有一个漏洞:

 <servlet-mapping> <servlet-name>FileServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> 

在你的web.xml文件中find并注释掉它。 这将阻止某人访问/WEB-INF./并访问您的文件。 注意/ WEB-INF /应该折腾一个合适的404。