不带 "SameSite" 属性的 Cookie 在不同的子域上发送
Cookies without "SameSite" attribute are sent on different sub domains
所以我已经阅读了有关 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:
If the user is on your-project.github.io and requests an image from
my-project.github.io that's a cross-site request.
所以当我启用“SameSite by default cookies”和“没有 SameSite 的 Cookies must be secure”标志时,我惊讶地发现当 first-site.domain.com 在框架中嵌入 second-site.domain.com,Cookie2 仍被发送到 second-site.domain.com,这似乎是矛盾的。
肯定是我误会了什么,但此刻,我还是一头雾水。
注意:当我在 anotherdomain.com[=45= 上的框架中嵌入 second-site.domain.com 时,我已验证], 浏览器未发送 cookie(如预期)。
如果 "domain.com" 在 public suffix list 上,则 subdomain1.domain.com 和 subdomain2.domain.com 被视为不同的站点。否则,它们将被视为同一站点。
当涉及到 SameSite cookie 时,"site" 的相关概念是 eTLD+1(有效顶级域 + 1 标签)。有效的顶级域类似于 .com 或 .co.uk 或 .github.io。所有 eTLD 都列在 public 后缀列表中。
eTLD+1 是有效的顶级域加上紧邻其左侧的 1 标签。 eTLD+1 也称为 "registrable domain"。直觉是两个不同的 eTLD+1 由不同的实体控制,同一 eTLD+1 的子域的所有内容都由同一实体控制。例如,mysite.github.io 与 yoursite.github.io 是不同的 eTLD+1,因为我无法修改您的站点,您也无法修改我的站点。另一方面,同一家公司拥有 subdomain1.domain.com 和 subdomain2.domain.com 并修改这两个站点。
如果两个域名的 eTLD+1 相同,则出于 SameSite cookie 的目的,它们被视为同一站点。
所以我已经阅读了有关 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:
If the user is on your-project.github.io and requests an image from my-project.github.io that's a cross-site request.
所以当我启用“SameSite by default cookies”和“没有 SameSite 的 Cookies must be secure”标志时,我惊讶地发现当 first-site.domain.com 在框架中嵌入 second-site.domain.com,Cookie2 仍被发送到 second-site.domain.com,这似乎是矛盾的。
肯定是我误会了什么,但此刻,我还是一头雾水。
注意:当我在 anotherdomain.com[=45= 上的框架中嵌入 second-site.domain.com 时,我已验证], 浏览器未发送 cookie(如预期)。
如果 "domain.com" 在 public suffix list 上,则 subdomain1.domain.com 和 subdomain2.domain.com 被视为不同的站点。否则,它们将被视为同一站点。
当涉及到 SameSite cookie 时,"site" 的相关概念是 eTLD+1(有效顶级域 + 1 标签)。有效的顶级域类似于 .com 或 .co.uk 或 .github.io。所有 eTLD 都列在 public 后缀列表中。
eTLD+1 是有效的顶级域加上紧邻其左侧的 1 标签。 eTLD+1 也称为 "registrable domain"。直觉是两个不同的 eTLD+1 由不同的实体控制,同一 eTLD+1 的子域的所有内容都由同一实体控制。例如,mysite.github.io 与 yoursite.github.io 是不同的 eTLD+1,因为我无法修改您的站点,您也无法修改我的站点。另一方面,同一家公司拥有 subdomain1.domain.com 和 subdomain2.domain.com 并修改这两个站点。
如果两个域名的 eTLD+1 相同,则出于 SameSite cookie 的目的,它们被视为同一站点。