指定清除站点数据/子域的域级别

问题描述 投票:0回答:2

我们使用 Clear-Site-Data 标头来清除注销时的 Cookie 和其他数据。

如果此标头与 https://example.com/clear-cookies 处的响应一起传递,则同一域 https://example.com 和任何子域(例如 https://stage .example.com等),将被清除。

如果其他系统在子域上运行,这就是一个问题。

我还想知道“example.co.uk”等域名会发生什么 - 这是否意味着所有英国公司域名的所有数据都被清除?

浏览器如何确定要清除哪些域?还有会受影响吗?

我们想在

oursystem.example.org
上使用它,以便它仅清除
oursystem.example.org
而不是
othersystem.example.org

security cookies browser clear-site-data
2个回答
0
投票

查看 w3c 规范后,似乎

Clear-Site-Data
只会清除指定的域(包括其子域)。因此,如果您清除
example.co.uk
,它也会清除
system.example.co.uk
。如果您清除
anothersystem.example.co.uk
,它也会清除
a.anothersystem.example.co.uk
及其所有子域。这是帮助我理解它的示例

因此,如果您清除

oursystem.example.org
,它不会对
othersystem.example.org
产生任何影响,但会对
a.oursystem.example.org
产生影响。


0
投票

删除整个域的所有 cookie 符合清除站点数据规范。我认为这应该在标头值的一般描述中更加清楚,但是如果您继续阅读清除 cookie 的详细算法(第 4.2.4 节),它会说:

我们删除整个“注册域”的所有 Cookie,因为 Cookie 会忽略同源策略,并且如果我们只清除特定子域的 Cookie,则存在明显的风险,即我们会使应用程序处于不明确的状态。例如,考虑 accounts.google.com

mail.google.com
,两者都具有表示用户登录状态的 cookie。

现在,你也在问:

我还想知道像“example.co.uk”这样的域名会发生什么 - 这是否意味着所有英国公司域名的所有数据都被清除?

这里的关键短语是“注册域名”。对于像
co.uk

这样的二级域来说,确定其开始和结束并不总是显而易见的。然而,这就是

公共后缀列表
的用途,规范也引用它来定义“注册域”。 cookie 清除算法的第一步是:

    registered
  1. originhost注册域名
  2. cookie list
  3. 为来自 cookie store 的 cookie 集合,其 domain 属性是带有
    registered
    domain-match
规范随后描述了如何删除完整的
cookie 列表

基于 Chrome 的浏览器似乎正在实现该算法。 Firefox 似乎以不同的方式处理它,即仅删除主机域及其子域的 cookie。 Safari

根本不实现

Clear-Site-Data: "cookies"(截至 2024 年)。


会受到影响吗?

虽然我同意这种行为可能很烦人,并且我不完全同意其背后的原因,但我认为没有直接的方法可以影响它。

© www.soinside.com 2019 - 2024. All rights reserved.