Firefox 85版本将于2021年1月发布,其特性之一是通过改进客户端存储(缓存)分区来增加用户隐私。这在其他地方已经被广泛地错误地报告为网络分区,可能是由于混淆了Firefox中的privacy.partition.network状态标志,它允许高级用户根据需要启用或禁用缓存分区。
什么是缓存分区——为什么需要它?
简单地说,缓存分区是为不同的网站保留不同的缓存池的过程,它基于请求加载资源的站点,而不是简单地基于提供资源的站点。
使用传统的全局范围的浏览器缓存,你可能会看到这样的行为:
用户浏览https://coolwebsite.com/
许多不同的资源被加载和缓存,包括https://coolwebsite.com/logo.jpg
用户浏览https://shadywebsite.com/
在一个隐藏的div中,shadywebsite加载https://coolwebsite.com/logo.jpg
shadywebsite使用JavaScript元素来计算用户浏览器需要渲染多长时间
由于https://coolwebsite.com/logo.jpg在缓存中,它的渲染时间不到5毫秒
shadywebsite现在知道用户最近访问了https://coolwebsite.com/——因为如果logo.jpg没有被缓存,在浏览器中渲染它将花费更长的时间。
当用户使用分区缓存时,当用户访问阴凉网站时,下载并缓存的https://coolwebsite.com/logo.jpg副本将不可用。由于shadywebsite的特定网站缓存池中没有文件的副本,所以logo.jpg必须直接加载——不管它是否在coolwebsite的缓存池中。
这是经常发生的缓存计时攻击的一个非常简单的版本——更复杂的攻击可能集中在强烈暗示用户当前登录到一个不相关站点的元素上,而不仅仅是最近访问过这个站点。
在某些情况下,攻击网站甚至可以强制删除缓存记录,这可以让它看到这些记录重新出现需要多长时间,从而提供更多关于用户活动的数据。
有关客户端存储分区的更详细讨论,沐鸣开户测速请参阅关于该主题的W3C隐私社区组的工作项,参见https://github.com/privacycg/storage-partitioning。
缓存分区的缺点是什么?
有些Web资源几乎被成千上万甚至数百万个站点普遍使用,例如,fonts.google.com提供的嵌入式字体。有了全局范围的缓存,site1.com可以从fonts.google.com嵌入Roboto字体的副本,并且当site2.com通过site999.com嵌入相同的字体时,它可以从浏览器缓存交付。
在分区缓存下,site1.com的Roboto副本只能被site1.com本身访问——当用户访问site938.com时,它也从相同的来源嵌入了Roboto,它必须单独下载(和缓存)。
哪些资源将在Firefox 85中分区?
根据ZDNet的报告,当privacy.partition.network_state被启用时,以下资源将被分区:
HTTP缓存
图像缓存
收藏夹图标缓存
连接池
样式表缓存
DNS
HTTP身份验证
Alt-Svc
投机的连接
字体缓存
HTTP严格传输安全
在线证书状态协议(OCSP)
中间CA缓存
TLS客户端证书
TLS会话标识符
预取
Preconnect
CORS-preflight缓存
虽然这将是最广泛的userdata缓存分区方案,沐鸣开户测速但Mozilla在部署方面正在迎头赶上。苹果从2013年开始对Safari的浏览器缓存进行分区,并在此后继续对其进行进一步的分区,从10月初发布的Chrome 86开始,谷歌对Chrome的HTTP缓存进行分区。
这将使微软的ie和Edge成为最后具有全球范围HTTP缓存的主流浏览器。Edge可能会默认有效地进行缓存分区,因为它将基于未来的Chromium新版本。