【问题标题】:How come requests from a "www" subdomain to a different subdomain considered "same-site"?来自“www”子域的请求如何被视为“同一站点”的不同子域?
【发布时间】:2019-12-21 00:46:28
【问题描述】:

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

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

关键词:

如果用户在 www.web.dev 并从 static.web.dev 那么这是一个同站点请求。

公共后缀列表定义了这一点,所以它不仅仅是顶级的 .com 等域,但也包括 github.io 等服务。那 使 your-project.github.io 和 my-project.github.io 算作 单独的网站。

【问题讨论】:

  • 我认为您是断章取义。为了理解它,您必须首先阅读并理解整篇文章,而不仅仅是这个关键术语。
  • 是的,我确实阅读了整篇文章,但在这里我仍然感到困惑。

标签: cookies csrf


【解决方案1】:

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

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

“eTLD+1”这个词也经常被使用,意思是有效的顶级域+左边的1个标签。该定义中“有效”的原因是公共后缀列表的来源。这就是允许在托管服务(如 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 是同一个项目的一部分。

您可以在此处查看定义:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-10
    • 2013-04-27
    • 1970-01-01
    • 2023-03-13
    • 2021-07-27
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多