Google chrome HTTP重定向到带前导斜杠的URI+;“黑斜杠”/\example.com“;在Chrome/IE上被认为是绝对的
HTTP请求被发送到网站Google chrome HTTP重定向到带前导斜杠的URI+;“黑斜杠”/\example.com“;在Chrome/IE上被认为是绝对的,google-chrome,internet-explorer,http,redirect,Google Chrome,Internet Explorer,Http,Redirect,HTTP请求被发送到网站http://www.foobar.com/, 服务器用以下HTTPLocation头响应 (前导斜杠和反斜杠,后跟主机名) 根据所使用的浏览器,可以观察到两种行为: 在Google Chrome 43(windows和linux)、Internet Explorer 11上,浏览器然后请求以下URI(就好像位置头值是协议相对URI): http://example.com 在Firefox 38、Safari 8、Epiphany或Curl上,执行以下请求: http
http://www.foobar.com/
,
服务器用以下HTTPLocation
头响应
(前导斜杠和反斜杠,后跟主机名)
根据所使用的浏览器,可以观察到两种行为:
- 在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
位置
标题:
“位置”标题字段在某些响应中用于引用
与响应相关的特定资源。类型
关系由请求方法和
状态代码语义
Location = URI-reference
字段值由单个URI引用组成当它具有
相对参考的形式([RFC3986],第4.2节),最终
值是通过根据有效请求URI解析来计算的
([RFC3986],第5节)。
定义了第4.2节[增加强调]中的相对参考:
以两个斜杠字符开头的相对引用称为
网络路径参考;这样的引用很少使用A
以单个斜杠字符开头的相对引用是
称为绝对路径参考。一个相对的引用
不以斜杠字符开头称为相对路径引用
我能找到的关于这个/\
前导序列的唯一参考是以下文章:
//example.com
),您还知道其他一些浏览器实际上解释为绝对的“相对”URI吗?(是否正确解释)- 为Chrome输入的官方错误报告:
请求中反斜杠的用途是什么?您肯定不是说请求的文件(或目录)的名称中有反斜杠?如果是这样的话,应该有人被解雇。无论如何,在我看来,是的,这是一条绝对的路径,但绝对的意思是在当前域的根,而不是互联网的根,所以
http://www.foobar.com/\应选择example.com
。现在我知道IE总是用斜杠替换反斜杠(因为它认为这有助于错误地键入反斜杠的Windows用户),但我很惊讶Chrome也这么做。在IE的辩护中,名字中不应该有反斜杠,所以从技术上讲,它对它们做什么都不重要@Lister先生“请求中反斜杠的用途是什么?”这正是我的问题,我看不出URI以“/\”开头有任何用途。然而,IE和chrome的处理可能会扩大网站上的攻击面,该网站接受相对重定向URL作为参数,但没有考虑此类验证,这就是为什么我想知道是否有新的IE/chrome行为背后的真实用例或原因。ASP.net博客文章中明确检查了这一顺序,所以我想这是一种已知的行为,至少对一些人来说……我明白了。那么,问题就变成了,“你怎样才能防止IE把反斜杠当作斜杠来对待?”我不知道你能不能做到。或者,“当有人在我网站的URL中使用\/
时,我如何检测到它?”但你说这是你的服务器所做的,而不是外部攻击者?
Location = URI-reference