我正在尝试托管我的网站,该网站在 ISA 2006(反向代理)后面使用 DotNetOpenAuth (OpenID),并在通过提供商(例如 Google)进行身份验证后,它返回一个 URL 中带有 %253A 的 URL。但是,ISA HTTP 过滤器会拒绝该请求。
我需要做的是,在 ISA Web 发布规则上,右键单击 > 配置 HTTP 策略属性 > 取消选中“验证规范化”并且它有效。
- 这通常是 ISA 2006 上的问题吗?其他防火墙是否有类似问题?
- 或者,是 OpenID 还是 DotNetOpenAuth 问题?
- 在 ISA 上禁用规范化检查是否安全?
根据 MSDN,引用“Web 服务器接收 URL 编码的请求。这意味着某些字符可以替换为百分号 (%),后跟特定数字。例如,%20 对应于空格,因此请求http://myserver/My%20Dir/My%20File.htm与对http://myserver/My的请求相同目录/我的文件.htm。规范化是对 URL 编码请求进行解码的过程。因为 % 可以是 URL 编码的,所以攻击者可以向基本上是双重编码的服务器提交精心设计的请求。如果发生这种情况,Internet 信息服务 (IIS) 可能会接受一个请求,否则它会因为无效而拒绝该请求。当您选择验证规范化时,HTTP 过滤器会将 URL 规范化两次。如果第一次规范化后的 URL 与第二次规范化后的 URL 不同,则过滤器拒绝该请求。这可以防止依赖双重编码请求的攻击。请注意,虽然我们建议您使用验证规范化功能,但它也可能会阻止包含 % 的合法请求。”