设置严格Referrer-Policy时,第三方JS为何可访问document.location?
Referrer-Policy的隐私漏洞疑问
Referrer-Policy用于限制请求中Referer头的设置时机,以及允许设置时可暴露的来源URL部分,核心是为了保护用户隐私——用户从一个网站跳转至另一个网站时,可能不希望对方知晓具体的来源页面(甚至来源网站)。
网页通常会加载第三方JavaScript,这类代码常发起各类请求,比如广告网络的追踪像素。发布商会在几乎所有页面部署这类代码,追踪像素多为请求1x1 GIF的GET请求,有时也会是携带大量内容的POST请求。
其他内容安全策略(CSP)可控制允许执行的JavaScript,我原本认为Referrer-Policy也会限制JavaScript可访问的数据,尤其是设置严格Referrer-Policy的页面,应该阻止非同源JavaScript访问(或详细访问)document.location的数据。
但实际并非如此。
举个例子:访问某出版社的参考书籍页面,该页面加载了第三方追踪像素代码。可以看到像素JavaScript向第三方分析接口发送了POST请求。由于父页面设置了Referrer-Policy: strict-origin,请求头中的referer仅包含网站根域名,缺失具体路径,这符合预期。但POST请求的请求体如下:
{ "event":"Pageview", "message_id":"messageId-1679954283495-7969080450692-C4SGAO96H18A0MH1EN5G", "event_id":"", "is_onsite":false, "timestamp":"2023-03-27T21:58:03.495Z", "context":{ "ad":{"sdk_env":"external","jsb_status":2}, "user":{"anonymous_id":"CXAXbvf3x_YpEzw4PhoPlJ6MGBI"}, "pixel":{"code":"C4SGAO96H18A0MH1EN5G"}, "page":{ "url":"https://www.penguinrandomhouse.com/books/reference", "referrer":"https://www.penguinrandomhouse.com/" }, "library":{"name":"pixel.js","version":"2.1.33"}, "device":{"platform":"pc"}, "session_id":"45a166a9-ccea-11ed-9ebf-08c0eb4a4ce6::NaPDjdJMkNgtY5tnReSS-C4SGAO96H18A0MH1EN5G", "pageview_id":"pageId-1679954283473-2599747993441-C4SGAO96H18A0MH1EN5G", "variation_id":"test_3", "userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36" }, "_inspection":{}, "properties":{} }
其中明确包含了来源页面的完整URL。我的问题是:浏览器为何不阻止这种行为?这似乎是Referrer-Policy的一个明显漏洞。
另外,这个问题是否更适合发布在安全类问答平台?
内容的提问来源于stack exchange,提问作者Armadillo Jim
相关产品推荐
相关产品推荐

