谷歌改变了Chrome浏览器的核心组件的工作方式,以便为用户增加额外的隐私保护。
被称为HTTP缓存或共享缓存的Chrome组件通过保存加载在网页上的资源副本(如图像、CSS文件和JavaScript)来工作文件。
其理念是当用户访问同一网站或访问使用相同文件的其他网站时,Chrome将从其内部缓存中加载这些文件,与浪费时间重新下载每个文件不同。
这个组件不仅存在于Chrome中,而且从互联网早期起就存在于所有的web浏览器中,在那里它是一种节省带宽的功能。
在所有浏览器中,缓存系统通常都是以相同的方式工作的。缓存中保存的每个图像、CSS或JS文件都会收到一个存储密钥,该密钥通常是资源的URL。
例如,图像的存储密钥将是图像URL本身:https://x.example/doge.png
当浏览器加载新页面时,它会在内部缓存数据库中搜索密钥(URL),然后查看是否需要下载图像或从缓存中加载图像,网络广告和分析公司意识到,同样的功能也可能被滥用来跟踪用户。
“从性能的角度来看,这一机制长期以来一直运行良好,”谷歌的开发者倡导者Eiji Kitamura说。
“然而,网站响应HTTP请求所用的时间可以显示浏览器过去访问过相同的资源,这会使浏览器面临安全和隐私攻击。“
这些包括:
- 检测用户是否访问过特定站点:对手可以通过检查缓存是否具有特定于特定站点或站点队列的资源来检测用户的浏览历史。
- 跨站点搜索攻击:对手可以通过检查特定网站使用的“无搜索结果”图像是否在浏览器缓存中来检测用户的搜索结果中是否存在任意字符串。
- 跨站点跟踪:缓存可用于存储cookie类标识符,作为跨站点跟踪机制。
缓存分区在chrome86中激活
但使用chrome86,本周早些时候发布,Google已经对这个机制进行了重要的修改。
被称为“缓存分区”,这个特性通过改变HTTP缓存中资源的保存方式来工作,它基于两个额外的因素。从现在起,资源的存储密钥将包含三个项目,而不是一个:
- 顶级站点域(http://a.示例)
- 资源的当前帧(http://c.示例)
- 资源的URL(https://x.example/doge.png)