当前位置: 首页 > 科技观察

谁能帮助我们过渡到没有第三方cookie的未来?

时间:2023-03-21 16:34:54 科技观察

大家好,我是ConardLi,今天我们继续聊Cookie。还是第三方cookies的问题,我们先回顾一下:第三方cookies第三方cookies允许服务从很多不相关的顶级站点跟踪用户并分析他们的信息,我们通常称之为跨站点跟踪。例如,当用户访问站点A时,来自站点C的iframe内容可以在用户的??浏览器上设置cookie以响应跨站点请求。如果用户随后访问也嵌入了C的站点B,则站点C可以访问用户访问站点A时先前设置的相同cookie。为了保护用户隐私,浏览器供应商正在限制这种行为并逐步停止对第三方的支持。派对饼干。目前Safari已经全面禁止三方cookies,Chrome也宣布将在未来两年内弃用。目前业界还没有相对成熟的解决方案来应对第三方cookies被禁用带来的各种影响。cookies去年加入的SameParty属性,在某些场景下可以替代第三方cookies,允许同一运营实体下不同域名的cookies共享。但是在处理场景方面还是有一定的局限性,配置也比较复杂,所以目前还没有大规模使用。一个常见的业务场景假设我们现在有一个通用的聊天服务,由第三方服务support.chat.example支持,我们的网站retail.example想把这个聊天框嵌入到一个iframe中。这种嵌入式聊天服务可能依赖于cookie来保存用户交互的历史记录。如果无法设置跨站点3方cookie,support.chat.example可能需要更改以依赖retail.example传递给它们的第一方会话的某些标识符。在这种情况下,每个嵌入support.chat.example聊天服务的网站都需要额外的设置来传递状态,这大大增加了开发成本。或者,我们也可以允许support.chat.example在retail.example页面上请求JavaScript。这引入了非常大的安全风险并且不是可靠的方法。CHIPS针对这个问题,Chrome提出了CookieswithIndependentPartitionState(CHIPS),它允许开发者选择cookie进入“分区”存储,每个顶级站点都有一个单独的Cookiejar。Chrome官方是这样描述的:CHIPS是帮助服务顺利过渡到没有第三方cookie的未来的重要一步。CHIPS引入了一个新的cookie属性:Partitioned,它让顶级上下文决定对哪些cookie进行分区。还是在上面的例子中,我们通过iframe在站点A中嵌入了一个站点C。一般情况下,如果禁用了第三方cookie,C就无法访问其在A站点的cookie。如果C在其cookie上指定了Partitioned属性,则该cookie将保存在一个特殊的分区jar中。只有当A站点通过iframe嵌入C站点时才会生效,浏览器会判断只有顶级站点是A时才会发送cookie。当用户访问一个新的站点,比如B站点,如果它还通过iframe嵌入站点C,那么站点B下的站点C无法访问之前在A下设置的cookie。如果用户直接访问站点C,他们也将无法访问此cookie。这在保护用户隐私的同时,完美解决了iframe页面第三方cookies的问题。完美~下面是启用CHIPS后cookie的partitionkey的变化:TrialCHIPS会在Chrome100到103开始试用!如果你想在本地尝试,你可以在ChromeCanary中打开chrome://flags/#partitioned-cookies标志:和SameParty一样,CHIPS实际上是解决三方cookie问题的众多提议之一,因为cookies的变化影响太大,谁能最终脱颖而出,成为各大浏览器的通用方案,还不好说,让我们拭目以待!