我的公司运行PCI合规性扫描,每次都会让我们感到厌烦的是ASP.NET详细错误消息信息泄漏。
描述是:发现了详细的ASP.NET错误消息... 而且我们担心我们会向我们的ASP.NET版本,IIS版本等展示潜在的黑客。
触发此信息的事情是浏览到“oursite”/Trace.axd,如果你这样做,你会得到一条跟踪错误消息:
跟踪错误说明:当前跟踪设置阻止 远程查看trace.axd(出于安全原因)。它可能, 但是,可以在本地服务器计算机上运行的浏览器查看。
在页面底部有这个:
----------------------------------------------- ---------------------------------版本信息:Microsoft .NET Framework版本:2.0.50727.4234; ASP.NET版本:2.0.50727.4223
有趣的是,错误消息是说如何禁用跟踪,你必须更改web.config才能看到它!我的web.config有(exerpt):
<configuration>
<system.web>
<trace enabled="false" requestLimit="10" pageOutput="false" localOnly="true" />
我认为这是trace disable语句的正确层次结构。我不明白为什么服务器正在响应一条消息,如果禁用了跟踪,则禁用跟踪。如果这是正常行为,那么为什么我们的PCI扫描仪抱怨泄露太多信息呢?
任何使它停止如此健谈的帮助非常感谢。
顺便说一下,如果重要的话,我的自定义错误是这样的:<system.web>
<customErrors mode="Off" defaultRedirect="~/Errors/GeneralError.aspx">
<error statusCode="404" redirect="~/Errors/PageNotFound.aspx" />
</customErrors>
答案 0 :(得分:12)
这些解决方案都不适用于我们,因为处理程序已注册并绕过MVC管道。我们的解决方案是在注册mvc处理程序之前删除处理程序。
<system.webServer>
<handlers>
<remove name="TraceHandler-Integrated" />
<remove name="TraceHandler-Integrated-4.0" />
像魅力一样工作,并在要求时返回404。
答案 1 :(得分:2)
首先,使用以下命令确保CustomErrors已启用:
<customErrors mode="On"
甚至
<customErrors mode="RemoteOnly"
对于trace.axd
,您的web.config是正确的,并且trace enabled="false"
应该保持该网址不可导航。我相信它只显示错误信息,因为您的自定义错误页面未被使用。