【发布时间】:2010-06-16 23:56:39
【问题描述】:
我正在尝试托管我的网站,该网站在 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 Dir/My File.htm 的请求相同。规范化是对 URL 编码请求进行解码的过程。 因为 % 可以是 URL 编码的,所以攻击者可以向基本上是双重编码的服务器提交精心设计的请求。如果发生这种情况,Internet 信息服务 (IIS) 可能会接受一个请求,否则它会因为无效而拒绝该请求。当您选择验证规范化时,HTTP 过滤器会将 URL 规范化两次。如果第一次规范化后的 URL 与第二次规范化后的 URL 不同,则过滤器拒绝该请求。这可以防止依赖双重编码请求的攻击。 请注意,虽然我们建议您使用验证规范化功能,但它也可能会阻止包含 % 的合法请求。”
【问题讨论】:
-
您可能希望将此发布到 ServerFault.com,因为它更多地是关于防火墙和 ISA 服务器而不是编程。你可能会在那里得到更多的叮咬:)
标签: .net iis openid dotnetopenauth isaserver