我正在尝试托管在ISA 2006(反向代理)后面使用DotNetOpenAuth(OpenID)的网站,并在使用提供商(例如Google)进行身份验证后,并在URL中返回带有%253A的网址。但是,ISA HTTP筛选器拒绝该请求。
我需要做的是,在ISA网络发布规则上,右键单击>配置HTTP策略属性>取消选中“验证规范化”并且它有效。
根据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不同,则过滤器会拒绝该请求。这可以防止依赖双重编码请求的攻击。 请注意,虽然我们建议您使用验证规范化功能,但它也可能会阻止包含%的合法请求。“
答案 0 :(得分:2)
OpenID消息通常可能在其请求中包含双重编码的URL。因此,根据您提供的文档,我要说您必须在反向代理上禁用“验证规范化”。