cookies - 为什么从 "www"子域到另一个子域的请求被视为 "same-site"?

标签 cookies csrf

为什么 www.web.devstatic.web.dev 算作同一个站点,而 your-project.github.io > 和 my-project.github.io 算作不同的站点吗?

此页面 ( https://web.dev/samesite-cookies-explained/ ) 的一部分让我感到困惑:

Key Term:

If the user is on www.web.dev and requests an image from static.web.dev then that is a same-site request.

The public suffix list defines this, so it's not just top-level domains like .com but also includes services like github.io. That enables your-project.github.io and my-project.github.io to count as separate sites.

最佳答案

我写了这篇文章,所以我会尝试回去澄清该部分。在这种情况下,术语“站点”具有特定的技术含义,比我们仅指网站时的定义更加严格。这里需要理解的重要概念是“站点”代表安全边界,即该点下的所有内容都由单个管理组织控制。

因此,web.dev 是站点,它是有效的顶级域 (dev) 加上左侧的单个标签 (web.dev)。 )。其下的任何子域仍由 web.dev 站点控制,例如例如,images.web.devthumbnails.images.web.dev。由于服务器只能创建任意数量的子域,因此它们对于将发送到该域的数据与浏览器分开没有任何意义。

术语“eTLD+1”也经常使用,这意味着有效顶级域+左侧1个标签。该定义中“有效”的原因是公共(public)后缀列表的出现。这就是允许在 GitHub 网站或 Google App Engine 等托管服务上分离网站的原因。

例如,com 就是一个 TLD。这意味着 a.comb.comc.com 都是单独的站点,因为每个域名都必须单独注册。但是,sub1.a.comsub2.a.comsub3.a.com 都可以由该域任意创建,而无需任何注册。

但是,github.io 是一个有效的 TLD,因为它托管许多单独的项目,因此 a.github.iob.github.ioc.github.io 都是单独注册的项目。但是(如果平台允许)sub1.a.github.iosub2.a.github.io 是同一项目的一部分。

您可以在此处查看定义:

关于cookies - 为什么从 "www"子域到另一个子域的请求被视为 "same-site"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59395892/

相关文章:

php - 我是否在登录系统中使用 cookie 或 session 登录?

java - Glassfish-3.0.1 混合用户 session - SSO

php - PHP中的CSRF(Cross-site request forgery)攻击示例和预防

asp.net - 如何删除特定页面中的 cookie?

node.js - 了解 NodejS 中的 Express session

cookies - 如何删除cookie

node.js - 使用主干和 Node.js 进行 CSRF 防御

python - 仅检查 Referer header 是否足以防止 CSRF?

java - Spring 安全 : enable/disable CSRF by client type (browser/non-browser )

http - 验证 FORM POST 的来源以确保它来自同一服务器/应用程序