我试图平息我们最近所做的PCI扫描失败,其中指出:
微软ASP.NET MS-DOS设备名称DoS 概要:远程web服务器使用的框架存在拒绝服务漏洞。影响:运行在远程主机上的web服务器似乎使用的是Microsoft ASP.NET,并且可能受到拒绝服务漏洞的影响。请求包含MS设备名称的URL可能会导致web服务器暂时失去响应。
简单地说,我们访问应用程序上的一个URL,比如/AUX/.aspx,我们得到了500个错误。
我使用RequestFiltering过滤掉这些请求,然后返回404,而服务器不试图处理请求。
我的web.config的节选如下:
<system.webServer>
<security>
<requestFiltering>
<denyUrlSequences>
<add sequence="/AUX/.aspx" />
</denyUrlSequences>
</requestFiltering>
</security>
</system.webServer>然而,这是行不通的,它仍然返回一个500。
我希望它能返回404。
如果我向denyUrlSequences添加以下catch-all url,那么整个站点就会产生预期的404。
<add sequence="/" />值得一提的是,该应用程序是运行在IIS7.5上的MVC应用程序(Windows2008MVC)。
发布于 2016-02-09 13:20:31
只需要解决这个问题。
我的解决方案是禁用.Net错误页和启用IIS页面。
当您将自定义错误处理从较高的.Net级别移到更低的IIS级别时,代码将从500个更改为404。
PCI测试通过:-)
发布于 2016-03-22 21:44:17
我自己也为此挣扎了一段时间。我认为500个响应代码对于URL中的MS名称是正确的,并且您不需要添加任何内容来请求过滤。
您会注意到,如果您使用任何MS名称(https://support.microsoft.com/en-us/kb/74496)而不对您的配置做任何操作,您将得到500个错误。但是,如果您为"foo“这样的其他内容添加了一个RequestFiltering denySequence,那么在浏览到/foo时将看到404.5错误。
如果您将relaxedUrlToFileSystemMapping="true“与请求筛选denySequence条目一起添加到httpRuntime元素中,那么您将得到MS-DOS名称的404.5。
但是禁用默认的asp.net配置,这样您就可以得到其他的东西,而对于一个具有MS名称的URL,500个响应是来自PCI遵从性检查的一个令人厌恶的请求。
https://stackoverflow.com/questions/34809485
复制相似问题