Firefox 85版将于2021年1月发布,其功能之一是通过改进客户端存储(缓存)分区来提高用户隐私。这已在其他地方广泛且错误地报告为网络分区,这可能是由于Firefox中privacy.partition.network_state标志的混乱所致,该标志允许高级用户根据需要启用或禁用缓存分区。
简而言之,缓存分区是根据请求资源的站点而不是仅在提供资源的站点上为单独的网站保留单独的缓存池的过程。
shadywebsite使用JavaScript元素来计时用户浏览器需要呈现logo.jpg的时间
shadywebsite现在知道用户最近访问了https://coolwebsite.com/-因为如果logo.jpg没有被缓存,则在浏览器中渲染将花费更长的时间。
使用分区缓存时,当用户访问shadywebsite时,https://coolwebsite.com/logo.jpg的副本将在用户访问coolwebsite时下载并缓存。由于在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嵌入相同的字体时,可以从浏览器缓存中传递它。
在分区缓存中,只有site.com本身才能访问site1.com的Roboto副本-用户访问site938.com(该网站也从同一源嵌入了Roboto)时,必须下载(并缓存)分别。
正如ZDNet所报告的,当启用privacy.partition.network_state时,以下资源现在将被分区:
尽管一旦启动,这将是生产中最广泛的用户数据缓存分区方案,但是Mozilla在完全部署一个方面正在追赶。苹果从2013年开始对Safari浏览器的缓存进行分区,此后一直继续对其进行分区,而Google从10月初发布的Chrome 86开始对Chrome的HTTP缓存进行了分区。
这将使Microsoft的Internet Explorer和Edge成为具有全局范围HTTP缓存的最后主流浏览器。默认情况下,Edge可能会默认有效地进行缓存分区,因为它将来会基于新版本的Chromium。