【问题标题】:Cookies without "SameSite" attribute are sent on different sub domains没有“SameSite”属性的 Cookie 在不同的子域上发送
【发布时间】:2020-01-31 00:40:10
【问题描述】:

所以我已经阅读了有关 Chrome 80's cookies defaulting to SameSite=Lax 的信息,并且和你们其他人一样,我现在正在尝试衡量这将对我的网站产生的影响。

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

  • first-site.domain.com 使用 Cookie1 (path=/; secure; httponly)
  • second-site.domain.com 使用 Cookie2 (path=/; secure; httponly)

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

那么,根据SameSite cookies explained

如果用户在 your-project.github.io 上并请求来自 my-project.github.io 这是一个跨站请求。

所以当我启用“SameSite 默认 cookie”和“没有 SameSite 的 Cookie 必须是安全的”标志时,我惊讶地发现当 first-site.domain.com 嵌入 second-site.domain.com 在一个框架中,Cookie2 仍然被发送到 second-site.domain.com,这似乎是矛盾的。

我肯定是误会了什么,但此刻,我还是很疑惑。

注意:我已经验证,当我将 second-site.domain.com 嵌入到 anotherdomain.com 的框架中时,浏览器不会发送 cookie (如预期)。

【问题讨论】:

    标签: google-chrome cookies samesite


    【解决方案1】:

    如果“domain.com”在 public suffix list 上,则 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 的目的,它们被视为同一个站点。

    【讨论】:

    • 所以这意味着虽然 your-project.github.iomy-project.github.io 被视为单独的站点(因为 github .io 是 TLD),first-site.domain.comsecond-site.domain.com 被视为同一个站点(因为 .com 是 TLD) .我没听错吗?
    • @GyumFox 确实是因为正如他在上面所写的那样“有效的顶级域类似于 .com 或 .co.uk 或 .github.io。所有 eTLD 都列在公共后缀列表中。”但是,天哪,这是一个完整而独立的答案。必须仔细地重读 15 遍,以确保我完全理解它。非常感谢OP
    猜你喜欢
    • 2020-04-17
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    相关资源
    最近更新 更多