全面阻止第三方Cookie及更多
这篇博客文章介绍了iOS和iPadOS 13.4以及macOS版Safari 13.1中对智能追踪预防(ITP)的多项增强功能,旨在应对我们近期在行业中发现的追踪问题。
全面阻止第三方Cookie
现在,所有跨站资源均默认阻止Cookie。这对隐私保护是一个重大改进,因为它消除了任何例外情况或“允许少量跨站追踪”的说法。
这看起来可能比实际上的改变更大。但自ITP于2017年首次发布以来,我们已经对其添加了许多限制,以至于现在Safari中大部分第三方Cookie已被阻止。为了继续支持跨站集成,我们在两年前发布了存储访问API,为经过身份验证的嵌入式内容提供获取Cookie访问权限的方式,并强制要求用户控制。它目前正在W3C隐私社区组中进行标准化过程。
无论这一改变的程度如何,它都带来了更多益处,详情如下。
为其他浏览器铺平道路
Safari继续为网络隐私铺平道路,此次更是首个默认全面阻止第三方Cookie的主流浏览器。据我们所知,在Safari之前,只有Tor浏览器默认全面阻止第三方Cookie,而Brave只剩下少数例外,所以在实践中它们处于同样良好的状态。我们知道Chrome也希望实现这种行为,他们已宣布将在2022年前推出。
我们将向W3C的隐私工作组报告我们全面阻止第三方Cookie的经验,以帮助其他浏览器迈出这一步。
消除Cookie阻止的状态性
全面阻止第三方Cookie消除了Cookie阻止中的状态性。正如我们在2019年12月的博客文章中讨论的那样,追踪预防的内部状态可能被转化为一种追踪媒介。全面阻止第三方Cookie确保了不存在可以通过Cookie阻止行为检测到的ITP状态。我们再次感谢Google通过其报告发起了这项分析。
禁用登录指纹识别
正如Jeremiah Grossman在2008年和Tom Anthony在2012年所讨论的,以及Robin Linus在2016年设置的可用于测试您浏览器的实时演示,这项技术允许网站隐秘地检测您已登录的位置,并且在任何没有全面阻止第三方Cookie的浏览器中都可行。
由于“全局浏览器状态”最近成为网络隐私社区关注的焦点,我们想指出,Cookie本身就是全局状态,除非浏览器在第三方上下文中阻止或分区它们,否则它们允许用户信息的跨站泄露,例如登录指纹识别。
其他益处
此外,全面阻止第三方Cookie还有以下更多益处
- 通过第三方请求禁用针对网站的跨站请求伪造攻击。请注意,您仍然需要防范通过顶级框架导航发起的伪造请求(请参阅SameSite Cookie以获取指导)。
- 消除了使用辅助第三方域识别用户的功能。否则,此类设置即使在用户删除第一方网站数据后也可能保留ID。
- 为开发者简化了操作。现在变得尽可能简单:如果您需要作为第三方访问Cookie,请使用存储访问API。
分类器如何?
ITP的分类器将继续工作,以检测跳转追踪器、追踪器串通和链接修饰追踪。
开发者指南
如果您的网站是少数仍在Safari中依赖第三方Cookie且未受ITP先前迭代影响的网站之一,那么您可以按以下方式为用户提供服务
选项1:OAuth 2.0授权,认证域(在您的情况下,是期望Cookie的第三方)将授权令牌转发到您的网站,您可以使用该令牌建立一个由服务器设置的安全且仅Http的Cookie的第一方登录会话。
选项2:存储访问API,通过该API第三方可以请求权限以访问其第一方Cookie。
选项3:弹窗的临时兼容性修复,详见我们ITP 2.0博客文章中的“临时兼容性修复:弹窗的自动存储访问”部分。此兼容性修复允许第三方从您的网站打开一个弹窗,并在该弹窗中点击或轻触后,在您的网站上的打开页面下获得临时的Cookie访问权限。请注意,此兼容性修复将在未来版本的Safari中移除,因此仅当它能为您节省时间并提供平稳过渡期时才选择此方案。
Cookie阻止锁定模式
ITP的最初版本包含我们所称的“Cookie阻止锁定模式”。这意味着一旦请求被阻止使用Cookie,该请求的所有重定向也将被阻止使用Cookie。早在2017年,我们收到了一项请求,要求允许Cookie阻止在重定向时开启和关闭,我们实施了该行为。但随着全面第三方Cookie阻止的到位,锁定模式又回来了。
所有脚本可写存储的7天上限
早在2019年2月,我们宣布ITP将客户端Cookie的有效期限制为7天。这项改变遏制了第三方脚本出于跨站追踪目的使用第一方Cookie的行为。
然而,正如许多人预期的那样,第三方脚本转向了其他第一方存储方式,例如LocalStorage。如果您查看当今许多网站第一方空间中存储的内容,会发现它充斥着以各种形式的“追踪器品牌用户ID”为键的数据。更糟的是,LocalStorage等API根本没有过期功能,即网站甚至无法要求浏览器限制此类存储的保留时间。
现在,ITP已将剩余的脚本可写存储形式与现有的客户端Cookie限制对齐,在Safari使用七天且网站上没有用户交互后,删除网站的所有脚本可写存储。受影响的脚本可写存储形式如下(不包括一些旧版网站数据类型)
- Indexed DB
- LocalStorage
- 媒体密钥
- SessionStorage
- Service Worker注册和缓存
关于添加到主屏幕的Web应用程序的说明
如前所述,脚本可写存储的七天上限是基于“Safari使用七天且网站上没有用户交互”这一条件。Safari中正是如此。添加到主屏幕的Web应用程序不属于Safari的一部分,因此它们有自己的使用天数计数器。它们的使用天数将与Web应用程序的实际使用情况匹配,每次使用都会重置计时器。我们不期望此类Web应用程序的第一方网站数据被删除。
如果您的Web应用程序确实出现了网站数据删除的情况,请告知我们,因为我们将其视为一个严重错误。智能追踪预防的目的不是删除Web应用程序中第一方的网站数据。
跨站document.referrer降级为源
所有跨站document.referrer
都被降级为其源。这与已经降级的跨站referrer请求头保持一致。
延迟跳转追踪的检测
一些追踪器已经开始延迟其导航重定向,可能是为了逃避ITP的跳转追踪检测。这表现为网页在您着陆后不久消失并重新加载。我们添加了逻辑来覆盖这种延迟跳转追踪,并像即时跳转一样检测它们。
测试您的网站
我们鼓励所有开发者定期使用Safari技术预览版(STP)以及我们的iOS、iPadOS和macOS测试版来测试他们的网站。ITP和WebKit的重大更改通常会在发布前几个月包含在测试版和STP中。保持领先的一种简单方法是使用STP作为日常开发浏览器。这使您可以访问最新的开发者工具,并帮助您在每次发布中发现网站中的意外行为。如果您遇到Bug或功能损坏,请提交一份开源Bug报告。