【问题标题】:What is difference between SameSite="Lax" and SameSite="Strict"?SameSite="Lax" 和 SameSite="Strict" 有什么区别?
【发布时间】:2020-05-16 08:30:14
【问题描述】:

谁能通过一个很好的例子告诉我 SameSite="Lax"SameSite="Strict" 有什么区别,因为我对这两者有点困惑?

【问题讨论】:

    标签: samesite


    【解决方案1】:

    一张图片胜过一千个字。这是我的清晰图表,它总结了您需要了解的有关 SameSite 属性的所有信息:

    请注意,“具有 SameSite=None 的 cookie 现在还必须指定安全属性(它们需要安全上下文/HTTPS)”来源:MDN

    来源:来自@chlily 上面的回答和blog from Google about SameSite cookies

    奖金:difference between same-site and same-origin from Google's blog

    【讨论】:

      【解决方案2】:

      Strict 不允许在跨站点请求或 iframe 上发送 cookie。 LAX 只允许 GET 允许所有请求。但 secure 是必需的;

      【讨论】:

        【解决方案3】:

        Lax 允许在某些跨站点请求上发送 cookie,而 Strict 不允许在跨站点请求上发送 cookie。

        Lax cookie 可以跨站发送的情况必须满足以下两个条件:

        1. 请求必须是顶级导航。您可以认为这相当于 URL 栏中显示的 URL 发生变化,例如用户单击链接以转到另一个网站。
        2. 请求方法必须是安全的(例如 GET 或 HEAD,但不是 POST)。

        例如:

        1. 假设用户在 site-a.com 上并单击链接以转到 site-b.com。这是一个跨站点请求。这是一个顶级导航并且是一个 GET 请求,因此 Lax cookie 被发送到 site-b.com。但是,不会发送 Strict cookie,因为它毕竟是跨站点请求。
        2. 用户在 site-a.com 上,并且有一个 iframe,其中加载了 site-b.com。这是一个跨站点请求,但它不是顶级导航(用户仍在 site-a.com 上,即加载 iframe 时 URL 栏不会更改)。因此,Lax 和 Strict cookie 都不会发送到 site-b.com。
        3. 用户在 site-a.com 上,它向 site-b.com 发布了一个表单。这是一个跨站请求,但是方法(POST)不安全。它不符合 Lax cookie 跨站点传输的标准,因此 Lax 和 Strict cookie 都不会发送到 site-b.com

        【讨论】:

        • 是否有任何安全(或其他)原因让人想要使用 SameSite="Strict"?
        • @joshhunt 基于 GET 的 CSRF 比以前少了很多,但它仍然会发生。因此,如果网站不需要 Lax cookie 工作(他们没有理由让页面的外部链接工作,如果这些页面只能由设置了 cookie 的用户看到),那么他们可以选择通过以下方式减少可能的攻击面制作 cookie SameSite=Strict.
        • 感谢您对“顶级导航”的解释。
        • 下面的呢?用户在 site-a.com 上,并且有一个带有 site-b.com 的 iframe。 site-b.com 向 site-a.com(在 iframe 内)发出 GET 请求。用于跨站点 GET 到 site-a.com(站点 a 内的 iframed 站点 a)的 Lax cookie 是否会随请求一起发送?根据我在 Chrome 90 beta 中的观察,这个 cookie 被阻止了,而在 Chrome 88 中它没有被阻止。
        • 您从哪里获得有关它仅适用于“安全”请求的信息?根据我的测试,如果帖子导致用户导航到目标 URL,则会在带有 SameSite=Lax 的 POST 请求中发送 cookie。如果 SameSite=Strict,则不发送 cookie。我在 Chrome 89 中对此进行了测试。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-06
        • 1970-01-01
        • 2021-08-21
        • 2021-08-20
        • 2021-06-14
        • 2022-01-04
        • 2019-01-14
        相关资源
        最近更新 更多