Asp.net RequestFiltering不适用于MS-DOS设备名称路径

Asp.net RequestFiltering不适用于MS-DOS设备名称路径,asp.net,iis,iis-7.5,pci-compliance,requestfiltering,Asp.net,Iis,Iis 7.5,Pci Compliance,Requestfiltering,我试图平息我们最近所做的PCI扫描失败,其中指出: Microsoft ASP.NET MS-DOS设备名称DOS 简介: 远程web服务器使用的框架存在拒绝服务漏洞。 影响: 在远程主机上运行的web服务器似乎正在使用Microsoft 并且可能受到拒绝服务漏洞的影响。请求URL 包含MS-DOS设备名称可能会导致web服务器 暂时没有反应 简而言之,我们访问应用程序上的URL,例如/AUX/.aspx,我们会得到500个错误 我使用RequestFiltering来过滤这些请求,并返回404

我试图平息我们最近所做的PCI扫描失败,其中指出:

Microsoft ASP.NET MS-DOS设备名称DOS

简介: 远程web服务器使用的框架存在拒绝服务漏洞。 影响: 在远程主机上运行的web服务器似乎正在使用Microsoft 并且可能受到拒绝服务漏洞的影响。请求URL 包含MS-DOS设备名称可能会导致web服务器 暂时没有反应

简而言之,我们访问应用程序上的URL,例如
/AUX/.aspx
,我们会得到500个错误

我使用RequestFiltering来过滤这些请求,并返回404,而服务器不尝试处理请求

my web.config的摘录如下:

<system.webServer>
    <security>
        <requestFiltering>
            <denyUrlSequences>
                <add sequence="/AUX/.aspx" />
            </denyUrlSequences>
        </requestFiltering>
    </security>
</system.webServer>

值得一提的是,该应用程序是一个运行在IIS 7.5(Windows 2008 R2)上的MVC应用程序。

刚刚解决了这个问题

我的解决方案是禁用.Net错误页并启用IIS错误页

当您将自定义错误处理从较高的.Net级别移动到较低的IIS级别时,HTTP响应代码将从500更改为404


PCI测试通过:-)

我自己也为此挣扎了很长一段时间。我认为500响应代码对于URL中的MS-DOS名称是正确的,您不需要在请求过滤中添加任何内容

您会注意到,如果您使用任何MS-DOS名称()而不对配置做任何更改,将出现500错误。但是,如果您为其他内容(如“foo”)添加RequestFiltering denySequence,那么在浏览到/foo时将看到404.5错误

如果将relaxedUrlToFileSystemMapping=“true”与请求筛选denySequence条目一起添加到,则将获得适用于MS-DOS名称的404.5


但是,禁用默认asp.net配置只是为了让您能够获得一个500响应以外的其他东西,对于一个带有MS-DOS名称的URL,这是一个来自PCI合规性检查的请求。

已经找到了一个小小的解决方法-通过删除
块,它可以按预期工作。。。
<add sequence="/" />