此 URL 是 pci 合规性扫描的一部分,它标记了返回的非常稀疏的 asp.net 错误页面,在实时站点上为 500 状态代码和文本
‘/’应用程序中的服务器错误。
运行时错误
描述:处理您的请求时发生异常。此外,执行第一个异常的自定义错误页面时发生另一个异常。请求已终止。
然而,当我在 Visual Studio 中运行该网站时,出现 404 错误,并且文本
‘/’应用程序中的服务器错误。
无法找到该资源。
描述: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
,我们打开了自定义错误,并默认重定向到/error/internal
。我还尝试使用位置标记来拒绝访问,使用请求过滤阻止它,并使用具有该路径的处理程序来捕获请求。
我尝试了此重写,也尝试了相同的规则阻止和重定向,但我仍然得到相同的 asp.net 错误页面。图像被截断,但规则是^.*\./.*$
,并且它确实与我尝试过滤的 URL 匹配(我也尝试过简单WEB-INF
)。
知道如何获取此 URL 来显示我们的自定义错误页面吗?
答案1
relaxedUrlToFileSystemMapping="true"
在 web.config 中添加httpRuntime 节点允许该 url 按预期被 ASP.Net MVC 处理。
<system.web>
<httpRuntime relaxedUrlToFileSystemMapping="true" />
</system.web>
答案2
在 IIS 中,默认情况下详细的错误消息会显示给本地客户端,这就是为什么您可以通过 Visual Studio 看到这些消息,但在远程收到 500 错误的原因。
要进行更改,请在 IIS 管理器中单击受影响的站点,在功能视图中单击“错误页面”,然后在右侧窗格中选择“编辑功能设置”。然后,您将能够选择“自定义错误页面”并以此方式进行配置。
编辑:Tomcat 也存在一个漏洞:
<servlet-mapping>
<servlet-name>FileServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
在您的 web.xml 文件中找到它并将其注释掉。这将阻止某人访问 /WEB-INF./ 并访问您的文件。请注意,/WEB-INF/ 应该抛出适当的 404。