没有“SameSite”属性的 Cookie 将在不同的子域上发送

2024-01-11

所以我读过Chrome 80 的 cookie 默认为 SameSite=Lax https://blog.chromium.org/2019/10/developers-get-ready-for-new.html和你们其他人一样,我现在正在尝试衡量这将对我的网站产生的影响。

我正在运行的网站分为几个子域,每个子域都使用自己的 cookie。它看起来像这样:

  • 第一个站点.domain.com uses Cookie1 (path=/; secure; httponly)
  • 第二个站点.domain.com uses Cookie2 (path=/; secure; httponly)

由于这些 cookie 没有指定SameSite属性,它们应该被视为Lax在 Chrome 80 上,因此应仅限于同一站点请求(除非它是顶级导航)。

然后,根据SameSite cookies 解释 https://web.dev/samesite-cookies-explained/:

如果用户处于开启状态你的项目.github.io并请求来自的图像我的项目.github.io这是一个跨站点请求。

因此,当我启用“默认的 SameSite cookie”和“没有 SameSite 的 Cookie 必须是安全的”标志时,我惊讶地发现,当第一个站点.domain.com embeds 第二个站点.domain.com在一个框架中,Cookie2仍然被发送到第二个站点.domain.com,这似乎是矛盾的。

我肯定是误会了什么,但现在我还是很困惑。

注意:我已经验证了当我嵌入时第二个站点.domain.com在一个框架上anotherdomain.com,浏览器不会发送 cookie(如预期)。


如果“domain.com”位于公共后缀列表 https://publicsuffix.org/,则 subdomain1.domain.com 和 subdomain2.domain.com 被视为不同的站点。否则,它们将被视为同一站点。

当涉及 SameSite cookie 时,“站点”的相关概念是 eTLD+1(有效顶级域 + 1 标签)。有效的顶级域名类似于 .com、.co.uk 或 .github.io。所有 eTLD 均列在公共后缀列表中。

eTLD+1 是有效顶级域名加上紧邻其左侧的 1 标签。 eTLD+1 也称为“可注册域名”。直觉是,两个不同的 eTLD+1 由不同的实体控制,而同一 eTLD+1 的子域的所有内容均由同一实体控制。例如,mysite.github.io 与 yoursite.github.io 是不同的 eTLD+1,因为我无法修改您的网站,您也无法修改我的网站。另一方面,同一家公司同时拥有 subdomain1.domain.com 和 subdomain2.domain.com 并修改这两个网站。

如果两个域名的 eTLD+1 相同,则出于 SameSite cookie 的目的,它们将被视为同一站点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

没有“SameSite”属性的 Cookie 将在不同的子域上发送 的相关文章

随机推荐