跳至正文

你需要关心的URL隐私

最近Chrome宣布,从85版本开始,将Referrer-Policy默认策略从
no-referrer-when-downgrade 变更到 strict-origin-when-cross-origin,今天来分析这个调整带来的一些影响。
首先Chrome的这个调整会减少网站对跨站用户的静默追踪,是非常好的措施。
设想你正在看一些羞羞的东西,比如链接是:http://www.xxxx.com/a?b=羞羞,如果你在这个页面点了一个微博链接,根据HTTP协议,你的浏览器在向微博发送请求的时候,也会把你现在浏览的页面URL通过Referer发给微博的服务器。
如果你此时登录了微博账号,那微博自然就知道你是谁,而且也知道是从羞羞的URL那里过来的。
如果按照Chrome的新策略,微博就只能知道你是通过http://www.xxxx.com来,拿不到具体的URL。
那,我们先来学习一下Referrer-Policy。

什么是Referrer-Policy

HTTP头中的Referrer-Policy主要是用来监管哪些访问来源信息,它会在Referer中发送一些信息。
比如,我在微博上搜索github
图片
可以看到Referer的值,是微博主页,说明我是从微博主页使用微博搜索并跳转的。
这里要注意Referer头应该是Referrer,少了一个字母r,因为在制定规范时犯了一个语法错误,一直沿用这个错误至今。
Referrer-Policy总共有8种策略
  • no-referrer
  • no-referrer-when-downgrade
  • origin
  • origin-when-cross-origin
  • same-origin
  • strict-origin
  • strict-origin-when-cross-origin
  • unsafe-url
no-referrer-when-downgrade是默认值,表示在没有指定任何策略的情况下用户代理的默认行为。在同等安全级别的情况下,引用页面的地址会被发送(HTTPS->HTTPS),但是在降级的情况下不会被发送 (HTTPS->HTTP)。
strict-origin-when-cross-origin则是对于同源的请求,会发送完整的URL作为引用地址;在同等安全级别的情况下,发送文件的源作为引用地址(HTTPS->HTTPS);在降级的情况下不发送此首部 (HTTPS->HTTP)。
图片
在上图中,微博搜索跨域加载图片,Referrer-Policy为默认值no-referrer-when-downgrade,Referer带着来源网页。

这次更改的影响

网站的Referrer-Policy设置影响Referer头的信息。如下图所示:
图片
默认为no-referrer-when-downgrade。跨域访问的话,Referer是URL。
如果Chrome把默认策略改为strict-origin-when-cross-origin,在你访问的网站没有设置的情况下,是以下这种情况:
图片
在跨域的情况下,只显示域名部分。

我想体验怎么办

Chrome更改并非突然,其实从Chrome 81版本开始,就可以通过访问
chrome://flags/#reduced-referrer-granularity
来手动打开此功能,只是在Chrome 85版本之后把它变成了默认值。体验最好的办法就是升级Chrome到85版本。
图片
这次的更改,对一些防盗链,返利网站应该有一些影响,如果网站指定了Referrer-Policy,则不受影响。
参考资料:
  • https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Referrer-Policy
  • https://developers.google.com/web/updates/2020/07/referrer-policy-new-chrome-default
  • https://site-one-dot-referrer-demo-280711.ey.r.appspot.com/stuff/detail?tag=red&p=p0
往期回顾:
Deepfake系列——音频深度伪造(1)
比赛分析篇(1):文本分类对抗攻击
开篇词——你所不知道的神经网络攻防
图片