Chrome 在 2024.01.04 也就是下周四,会开启 1% 的全球灰度,限制(默认禁止)Chrome 浏览器访问第三方 cookies,blog.google/products/chrom,其目的是通过限制网站对第三方 cookie 的访问来限制跨站点跟踪,同时也可以防范大量 CSRF 攻击问题,影响的网站会比较多。
会存在哪些影响呢?主要包括两类场景:
1)A 站点下如果 iframe 内嵌了 B 站点,当 iframe 中的 B 站点发起请求时,它当前域下的 cookie 会禁止被携带。举个栗子,如果要求 B 站点必须是登录态,那么即便 B 站点刚在独立 Tab 页登录过,它在 iframe 下仍然会是未登录态,因为这种情况不允许它获取 B 站点下的 cookies 了。很多公司的内部系统都是各种 iframe 相互穿插,需要引起注意
2)A 站点通过 ajax 请求 B 站点的接口,此时 B 站点下的 cookies 在请求时会禁止被携带。也就是说,广告类、推荐类业务等都会直接受到影响,请求是可以发出去的,但是丢失了当前用户身份信息,无法进行身份识别和内容推荐
其实这个 Privacy-Sandbox 隐私保护 Chrome 在 19 年就开始推了,当初是第一阶段,增加了一个叫做 SameSite 的 cookie 配置,设置为 None 即可;当前的策略则更强,不管你是否有设置 SameSite=None,默认禁止访问第三方 cookies。
当然,它也提供了几个规避策略,允许网站自主修复这个问题:
1)在 cookies 中增加 partitioned 属性,例如 key=value; SameSite=None; Secure; Partitioned; 注意这里多了一个 Partitioned,它的作用是允许在 A 站点下新写一份 cookies,这份 cookies 跟独立打开 A 站点写下的 cookies 是两个储存空间,互不干扰,详情可以看这里:developers.google.com/privacy-sandbo
2)Chrome 提供了一个 Related Website Sets 的白名单机制,允许你通过提交配置的方式给浏览器增加白名单,配置的作用是明确 A 站点与 B 站点存在关联关系,详情可以看这里:github.com/GoogleChrome/r
3)通过 Storage Access API 向用户获得授权,跟网页要打开摄像头要求授权一样,只不过有效期只有 30 天。详情可以看这里:developers.google.com/privacy-sandbo
Chrome 计划在 2024 年底完成全量发布,下周只开启 1% 的灰度,现在修改还来得及,哈哈