使用ValidateRequest =“true”和HttpHandlers

时间:2011-05-03 17:05:14

标签: asp.net iis-7 xss validate-request

我在web.config的HttpHandlers部分设置了一个HTTP Handler,如下所示:

<add path="myNamespace.myHandler.axd" verb="*" type="myNamespace.myHandler, myNamespace" validate="false"/>

PCI扫描突出显示了此处理程序中的漏洞,该漏洞可将其打开以进行XSS攻击。基本上你可以通过查询字符串传递一个标记,并且httphandler将标记直接转换为原始格式的响应 - 哎哟!

我无法访问此处理程序的源代码,因此我一直尝试使用带有以下标记的asp.net来关闭此漏洞:

<location path="myNamespace.myHandler.axd">
    <system.web>
        <pages validateRequest="true">
        </pages>
    </system.web>
</location>

然而这不起作用。查询字符串未经过验证,标签仍在通过。

我正在使用asp.net 3.5运行IIS7。

有人可以帮忙吗?

干杯, 专利

1 个答案:

答案 0 :(得分:0)

据我所知,没有简单的方法可以使用配置设置为asp.net 3.5中的通用http处理程序启用请求验证。然而,.net 1.1中引入了一些validation methods,我相信(不是100%确定这一点)与默认请求验证中使用的标准相同。

4.0 introduced全面默认请求验证,并可选择恢复为2.0设置。

我认为你有两种选择:

  • 手动处理验证 代码中的某个地方
  • 升级到.net 4.0并获得默认请求验证的好处