HTTP重定向到URI,其中带有前导斜杠+ blackslash“/\ example.com”在Chrome / IE上被认为是绝对的

时间:2015-06-15 13:40:13

标签: google-chrome internet-explorer http redirect

HTTP请求将发送到网站http://www.foobar.com/, 服务器使用以下HTTP Location标头进行响应    (领先斜线和backslah,然后是主机名)

Location:/\example.com

根据使用的浏览器,可以观察到两种行为:

  • Google Chrome 43 (Windows和Linux), Internet Explorer 11 上,浏览器会请求以下URI(就好像位置标头值是协议相对URI):

    http://example.com

  • Firefox 38 Safari 8 Epiphany Curl 上,执行以下请求:

    http://www.foobar.com/\example.com

据我了解规范,Chrome和IE应用的行为不正确。

HTTP 1.1 specification (RFC 7231) 在第7.1.2节[强调添加]中定义了Location标题:

  

“Location”标题字段在某些响应中用于引用a     与响应相关的特定资源。的类型     关系是由请求方法和     状态代码语义。

Location = URI-reference
     

字段值由单个URI引用组成。 什么时候有     形式的相对参考([RFC3986],第4.2节),最后的     通过将其与有效请求URI解析来计算值     ([RFC3986],第5节)。

URI specification (RFC 3986) 在第4.2节[强调添加]中定义了相对引用:

  

以两个斜杠字符开头的相对引用被称为     网络路径参考;这种参考很少使用。 :一种     以单个斜杠字符开头的相对引用是     称为绝对路径参考。这样做的相对参考     不以斜杠字符开头称为相对路径引用。

我可以找到的/\前导序列的唯一引用位于以下帖子中: http://www.asp.net/mvc/overview/security/preventing-open-redirection-attacks

  1. 您对Chrome和IE为何将这些URI解释为绝对有任何解释吗? 它有用吗?
  2. 除了协议相对URI(//example.com)之外,您是否知道任何其他“相对”URI实际上被某些浏览器解释为绝对的? (是否正确解释)
  3. 更新

1 个答案:

答案 0 :(得分:0)