【问题标题】:Does a session cookie on different subdomain count as 3rd-party?不同子域上的会话 cookie 是否算作第 3 方?
【发布时间】:2012-04-22 23:15:00
【问题描述】:

假设我在 www.example.com 有一个站点,其中有一个指向 ASP.NET 站点 myapp.othersite.com 的 IFRAME - 这会导致会话和我理解的第 3 方 cookie。

如果我将嵌入式应用程序移至 myapp.example.com,会话 cookie 是否仍算作第 3 方 cookie,因为它是不同的子域?

【问题讨论】:

    标签: iframe cookies subdomain privacy


    【解决方案1】:

    如果您在域 .example.com 上设置 Cookie

    那么来自 www.example.comwww.myapp.example.com 的 cookie 将被视为相同。

    没有任何 cookie 被视为 3rd 方 cookie。

    【讨论】:

    • 不确定默认情况下 ASP.NET 将使用哪个域进行会话,但查看this question 看起来它将是 example.com - 我会测试并报告回来
    • 似乎奏效了,因此不同子域上的 ASP.NET 会话 cookie 仍算作第一方。
    • 在网站上设置的 cookie 被加载到不同网站的 iframe 中,被视为父网站的第三方 cookie。
    • 这不应该是公认的答案,因为这个问题是关于第三方 cookie 的,这个答案通过在不同的子域上通过域属性使 cookie 成为第一方解决了这个问题,因此没有解决原来的问题。回答 OP:不。因为即使在浏览器设置中明确阻止了第三方 cookie,也始终允许从不同子域设置的第三方 cookie。在 Firefox、Edge 和 Chrome 上测试。
    【解决方案2】:

    如果 Cookie 来自不同的基域(基域为 example.comexample.co.uk),它们似乎被视为第 3 方,但如果它们来自同一基域的不同子域,则不会。

    myapp.example.com 将能够设置 带有域 myapp.example.com 的 cookie,前提是它嵌入在 www.example.com 中。

    没有必要让myapp.example.com 使用域.example.com 设置cookie,除非这些cookie 需要从不同的子域读取

    [在 Firefox、Chrome(阻止 3rd 方 cookie)和 Safari 中测试] [ThirdPartyUtil.IsThirdPartyInternal 似乎是在 Firefox 中检查的地方]

    【讨论】:

    • 这对于现代浏览器是正确的。我花了一段时间才弄清楚为什么我的 oauth 登录在开发模式下不起作用
    【解决方案3】:

    假设没有在相关 cookie 上设置域属性,在这种情况下,由于主机名不同,它确实是第三方 cookie。但是,通常会阻止第三方 cookie 的浏览器不会阻止它,因为基本域相同。因此,在这方面它不被视为第三方 cookie。

    我知道这一点是因为当基域相同而子域不同时,我能够成功设置和读取第三方 cookie,而第三方 cookie 在最新版本的 Firefox、Chrome 和 Microsoft Edge 浏览器中被阻止设置。即使没有在 cookie 上设置域属性也是如此。这意味着 Firefox、Chrome 和 Microsoft Edge 不会将来自同一基本域的 cookie 视为第三方 cookie。

    我的方法如下。我有两个不同的主机名,它们具有相同的基域但不同的子域。其中之一包含两个 PHP 文件。第一个设置一个带有随机 cookie 名称且没有域属性的 cookie,并将 cookie 的名称作为 JSONP 返回。第二次尝试读取 cookie,然后返回 true 或 false 作为 JSONP。另一个主机名包含一个 HTML 文件,该文件使用 AJAX 查询设置 cookie 的第一个 PHP 文件,然后在完成后立即再次使用 AJAX 查询第二个 PHP 文件,该文件测试是否存在 cookie。在继续之前,我首先确保浏览器阻止了第三方 cookie。我测试了三种浏览器:Firefox、Chrome 和 Microsoft Edge。在所有情况下,结果都表明 cookie 已成功设置和读取,即使 cookie 来自不同的域,只要基本域相同。

    结论:如果某个资源设置了cookie,并且该资源上的基域与网站上的基域相同,但子域不同,则流行浏览器不会将其视为第三方cookie。

    【讨论】:

    • 这似乎也适用于新的 SameSite 标志。我测试了将 cookie 设置为 Strict,它仍然包含在对同一基域上另一个子域的请求中。
    猜你喜欢
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    • 2021-06-26
    • 2012-01-17
    相关资源
    最近更新 更多