ITP,全称为Intelligent Tracking Prevention,中文译为智能反追踪技术,是苹果在2017年的世界开发者大会WWDC上提出的一项Safari的新功能,为更好地保护苹果产品用户的隐私。
Safari是基于WebKit核心,而WebKit早已包含减少跟踪的功能。从一开始就默认阻止第三方cookie。WebKit正在此基础上进一步的增强相关措施,Intelligent Tracking Prevention是WebKit的一项新功能,可通过进一步限制Cookie和其他网站数据来减少跨站点跟踪。
什么是跨站点跟踪和第三方Cookie?
网站可以从非其自身的域中获取资源,就是从第三方加载资源,例如图像和脚本。这称为跨域或跨站点加载,是Web的强大功能。但是,这种加载还可以跨站点跟踪用户。
假设有一个用户首先浏览example-products.com寻找新的小器件,然后又浏览example-recipies.com看看晚上想要吃什么。如果这两个站点都从example-tracker.com加载资源,并且将example-tracker.com的Cookie存储在用户的浏览器中,则example-tracker.com的所有者可以知道用户访问了example-products.com和example-recipies.com,他们在那些网站做了什么操作,使用了哪种网络浏览器等等。这就是所谓的跨站点跟踪,example-tracker.com使用的cookie被称为第三方cookie。
在我们的测试中,我们发现了流行的网站,其中包含70多个此类跟踪器,它们都以静默方式收集用户数据。有些第三方跟踪甚至有共享数据的协议,如A厂家的,共享给B,布署A公司的代码,默认会加载到A和B的代码,你的数据隐私正在肆无忌惮被跟踪着,你可以一些插件如Ghostery去检测。
ITP如何工作?
Intelligent Tracking Prevention收集有关资源负载以及用户交互(例如点击,点击和文本输入)的统计信息。统计信息被放入每个顶级私有域或TLD + 1的Bucket中,是在用户的本地设备的浏览器中,而没有上传数据的,这个是为了保障用户的隐私。
机器学习分类器
机器学习模型用于根据收集的统计信息对哪些顶级私人控制域具有跟踪用户跨站点的能力进行分类,用机器学习里面的分类器去分类,识别出第三方跨站跟踪的网域名,在收集到的各种统计信息中,有三个向量根据当前的跟踪实践被证明具有很强的分类信号:唯一域数下的子资源,唯一域数下的子帧以及重定向到的唯一域数,这三个向量就是机器学习算法的主要维度。
注意所有数据收集和分类都在设备上进行,不上传数据。
分类后采取的行动
假设ITP将ads-ru-us.com归类为能够跨站点跟踪用户,你自己的网站是example.com,访问你网站的时候,对ads-ru-us.com(第三方cookie)会有什么影响?从那时起会发生什么?
24小时内(当天)
如果用户在过去24小时内访问过ads-ru-us.com,属于ads-ru-us.com是第三方cookie将可用。这允许“使用我的X帐户在Y上登录”登录方案。
如上图,假设一个用户访问了example.com后,广告展示并生成一个第三方cookie,属于ads-ru-us.com,用户在24小时内访问过ads-ru-us.com,那么这个来自ads-ru-us.com的第三方cookie能过用于第三方的跟踪,如再营销。
第一天后第三十天前
如果用户与ads-ru-us.com在第一天后第三十天前进行交互,也就是这段时间内要打开ads-ru-us.com网站,如在第三天,就是用户有打开页面ads-ru-us.com,第三方cookie将不可用。且会被隔离。
30天后
如果用户在过去30天内未与ads-ru-us.com进行交互,也就是30天后才访问ads-ru-us.com,则会立即清除跟踪服务器ads-ru-us.com下的cookie,也就是第三方cookie,这里被清除的数据就是Cookie ID =klm456,并在添加新数据后继续清除。
上述三种情况,可以用下面这个图表示:
第三方cookie有非常严格的条件:需要访问第三方站点的网站,与之有交互才可使用,如在页面上有点击,有表单提交,这个条件非常重要,没有交互的前提是使用不了第三方cookie的,因为很多的小公司的都不符合这个要求。在时间上是当天有效;1天之后30天之前是用不了(这里是用不了,下一版会提供一个使用方法),会对第三方cookie隔离,30天之后直接删除,不在再生成,官方是这样写continue to be purged if new data is added,是拉黑名单了,知道你是跨站跟踪的,不给你生成了。
隔离Cookie
如果用户在过去30天而不是过去24小时与example.com进行了交互,则example.com会保留其cookie,但它们将被隔离。隔离意味着第三方在每个顶级私人控制域或TLD + 1上获得唯一的隔离存储,例如account.example.com和www.example.com共享了example.com隔离。
这样可以确保用户保持登录状态,即使他们只是偶尔访问某个站点,同时限制使用Cookie进行跨站点跟踪。请注意,WebKit已经为所有第三方域对缓存和HTML5存储进行了隔离。
这对Web开发人员意味着什么?
借助Intelligent Tracking Prevention,WebKit可以在用户隐私和网站对设备上存储的需求之间取得平衡。也就是说,我们知道此功能可能会给合法的网站存储(即非用于跨站点跟踪的存储)带来挑战。就是使用第三方cookie要慎重。
存储需要用户交互
如果用户没有定期直接与你的网站进行交互,请检查以确保你不会依赖Cookie和其他存储来持久保存。要求用户交互涉及客户端存储的大多数合法使用。它还提供了更好的透明度,并使用户可以更好地控制谁可以在其设备上存储数据。
用户没有访问第三方的网站情形下,没有交互,就不要再自己的网站下生成第三方cookie,这样是用不了的。
网页分析
确保将你的网络分析配置为不依赖于没有用户交互的域中的第三方cookie。对一个网站系列进行跨网站分析的一种流行方法是使用链接修饰,即使用需要跨源和导航携带的信息填充链接。
就是第三方跟踪工具不要使用第三方cookie,如Google Analytics是使用第一方cookie。
广告归因
我们建议使用服务器端存储来归因于你网站上的广告展示次数。链接修饰可用于在导航中传递归因信息。注意这个链接修饰,给后面埋下伏笔,后面专门一个ITP版本是为了解决过度使用链接修饰。
管理单点登录
如果你运行具有集中式会话的单一登录系统,则用户需要与控制会话的域进行交互。否则,你将冒着ITP的风险,将会话控制器域视为跟踪器。
想象一下上面描述的场景;这是三个网站SiteA.com,SiteB.com和SiteC.com使用的account.com上的中央会话。在account.com免除cookie隔离的24小时内,会话信息可以从account.com传播到受抚养人。从那时起,网站必须保持没有account.com cookie的会话,或者它们必须每天在account.com短暂停留以重新进行身份验证,以获取新的用户交互。你可以授予站点通过导航和HTTP响应中设置的新cookie在站点之间传播会话信息的能力。单一注销需要使服务器上的account.com会话无效。
你可以这样理解,account.com就是Facebook,SiteA.com,SiteB.com和SiteC.com有Facebook社交插件插件,用户只有在最近24小时内访问过facebook.com时才能喜欢/评论,也就是你打开网站SiteA.com的时候想要使用Facebook社交插件的功能,你需要到Facebook短暂停留以重新进行身份验证,以获取新的用户交互。否则,用户必须经过一个附加的确认屏幕才能执行所需的操作。如果用户在过去30天内没有访问过facebook.com,则他们必须再次登录(即使他们从未注销过Facebook)。
这样的处理规则也是埋了个地雷,导致下一版ITP 1.1就是解决这个问题。
影响
第三方cookie还可以使用,但是第三方cookie基本废掉了,因为第三方cookie要能使用的前提是在24小时内有访问该跟踪域名的网站,这对Facebook和Google这样的巨头没问题,因为大部分的人基本每天都会使用这两个产品,但对于其他的就很大问题,没有打开第三网站与它有交互,基本上就是用不了第三方cookie。
第一版做的太严格,影响到了一些现有的使用模式,所以下一版本主要是解决第一版的一些问题。
措施
- 链接修饰,在跳转的URL上年添加参数,这个是第一版推荐的一种方式,adwords 上的gclid就是这样
- Cookie匹配,提前匹配好,但过于频繁
- 伪装成第一方cookie
- 用第一方cookie,需要用到API
总结
对第三方cookie做了严格的限制,导致你就是不符合要求,不能够使用,小公司第三方cookie在safari就基本处于挂掉的状态。大公司的还可以使用,如Facebook,Google。
来源:
https://webkit.org/blog/7675/intelligent-tracking-prevention/
https://clearcode.cc/blog/intelligent-tracking-prevention