想象一下,如果你逛完一家超市之后,你的相关信息,如:姓名、出生年月、体型、身高、购买记录等都被记录了下来,你会是什么感受,你还会对这个超市有信任感吗?
虚拟世界也一样,在你使用一个浏览器搜索一些信息后,比如你只搜索了一个衣服的品牌,然后当你在登录该浏览器时,它就会弹出很多与该品牌有关的广告,那你还会对这个浏览器的隐私安全有信任感吗?
如果你认为 IP 地址、cookies 和 HTTP 头是在 web 上唯一标识和追踪用户的要素的话,那么你就大错特错了!随着网络指纹技术的不断发展,我们的上网信息随时都会以各种方式被追踪。
WebKit长期以来一直致力于反追踪技术的研究,并且从一开始就默认阻止第三方Cookie。现在,研究人员正在为研发WebKit的一种新功能——智能反追踪技术,通过进一步限制Cookie和其他网站数据来减少跨站点追踪。
什么是跨站追踪和第三方Cookie?
网站可以从除自己以外的域中获取资源,如图像和脚本,这被称为跨源或跨站加载,并且是网络强大功能的基础。然而,通过资源的加载也可以实现对用户的跨站追踪。
打个比方,你首先浏览一个买卖某产品的网站example-products.com,然后再浏览了example-recipies.com了解一下晚餐的信息。如果这两个网站都从example-tracker.com加载资源,并且example-tracker.com的Cookie都存储在用户浏览器中,example-tracker.com的管理员就可以知道你访问了产品网站和食谱网站,除此以外,你在这些网站上做了什么,使用什么样的网络浏览器等等都能被管理员看得一清二楚,这就是所谓的跨站追踪,而example-tracker.com使用的cookie就被称为第三方cookie。
译者注:cookie,很多网站都会用的一个机制,可以保存用户的相关信息,token等等,很多人熟知的应该是第一方cookie,可以针对二级域名进行信息的保存,如果遇到跨域的情况,那么第一方cookie是没有用的,因为它做不到跨域。但是可以利用第三方cookie来实现这一机制,第三方cookie不仅可以存储用户的信息,token之类,更多的可以来实现用户行为的追踪以及分析。
在WebKit研发团队的实际测试中,研究人员已经发现有超过70个流行网站存在着这样的追踪器,它们都在悄悄地收集用户的数据。
智能反追踪技术如何工作?
智能反追踪技术可以收集有关资源载荷的统计信息以及相关的用户交互,例如点击、文本输入等,这些统计数据会被放入每个顶级私人控制域(top privately-controlled domain)或TLD + 1的Bucket中。
机器学习分类器
WebKit会将收集的统计数据,使用机器学习模型对顶级私人控制域所进行的用户跨站的追踪进行分类。在收集的各种统计数据中,机器学习分类器会根据当前的追踪做法,把数据分为三种:
1.子域中唯一域的数量
2.唯一域数的子帧
3.重定向到的唯一域的数量
所有数据收集和分类都是在当前所使用的设备上进行。
分类后采取的行动
假设智能反追踪技术将example.com分类为具有追踪用户跨站的能力,那接下来会做出什么应对措施呢?
如果用户在过去30天内没有与example.com进行互动,则会立即清除example.com网站数据和Cookie,如果在30天内添加了新的数据,则会连同这些数据一起清除。
然而,如果用户把example.com作为顶级域名(通常被称为第一方域名)进行交互,则智能反追踪技术就会将其视为用户对该网站感兴趣,并暂时不对其做出处理,时间表如下所示:
如上图所示,如果用户在最近24小时内与example.com进行了互动,那么当example.com是第三方域名时,其Cookie将可用,也就是允许用户帐户在别处使用该Cookie进行登录。
这意味着用户只能从实际交互的网站中获得长期的持久性Cookie和网站数据,并在用户浏览网页时主动删除追踪数据。
对Cookie进行分区
如果用户是在最近30天内,而不是最近24小时与example.com进行了互动,那么example.com虽然将保留其Cookie,但将被分区。分区意味着第三方在每个顶级私人控制域或TLD + 1获得独一无二的独立存储,例如。 account.example.com和www.example.com共享分区example.com。
这样,即使用户只是偶尔访问了某个网站,同时限制使用Cookie进行跨站点追踪,用户也可以保持登录状态。请注意,WebKit已经为所有第三方域进行了分区缓存和HTML5存储。
通过智能反追踪技术,WebKit就在用户隐私和网站对设备存储的需求之间取得了平衡。
存储必需的用户交互
如果用户不定期与感兴趣的网站直接交互,就需要检查它们不是依赖Cookie和其他存储空间,以便智能反追踪技术能提供更好的透明度,并使用户能够更好地控制存储在他们设备上的数据。
管理单点登录
如果你运行具有集中式会话的单一登录系统,则需要与控制会话的域进行交互。否则,就将遇到智能反追踪技术的拦截,将会话控制器域视为追踪器。
想像一下上图所示的场景,account.com为三个站点SiteA.com,SiteB.com和SiteC.com上的一个中央会话。在account.com的24小时内可以不对cookie进行分区,会话信息可以从account.com往下传播。此时,站点上必须维护没有account.com cookie的会话,或者用户必须在account.com上重新进行身份验证,并通过短暂停留来获取新的用户交互。用户可以通过导航和HTTP响应中设置的新Cookie来授予站点在其间传播会话信息的能力。如果要实现单点登出(single sign out)功能,则需要使服务器上的account.com会话无效。