【问题标题】:What are the security differences between cookies with Domain vs SameSite strict?具有 Domain 与 SameSite 严格的 cookie 之间的安全差异是什么?
【发布时间】:2019-11-27 04:02:35
【问题描述】:

当我们创建一个 cookie 时,我们可以通过设置 domain 属性来指定它的使用位置。

Set-Cookie: Foo=bar; Path=/; Secure; Domain=baz.qux.com;

上面的 cookie 将仅与域 baz.qux.com 的请求一起使用。

Set-Cookie: Foo=bar; Path=/; Secure; SameSite=strict;

上面的 cookie 省略了domain 属性,这意味着将使用 set cookie 所在的域(不包括子域,IE 除外)。它还有SameSite=strict属性,意思是:

SameSite cookie 让服务器要求 cookie 不应与跨站点(站点由可注册域定义)请求一起发送,这提供了一些针对跨站点请求伪造攻击 (CSRF) 的保护。

来自MDN

如果这两个 cookie 都设置在域 baz.qux.com 上,那么这两个 cookie 的行为有何不同?

SameSite=strict 属性如何防止具有指定域的其他 cookie 没有的 CSRF?

【问题讨论】:

    标签: security cookies csrf


    【解决方案1】:

    Domain 属性限制将 cookie 发送到的主机。 SameSite 属性限制了 cookie 的发送来源。

    所以第一个cookie:

    Set-Cookie: Foo=bar; Path=/; Secure; Domain=baz.qux.com;
    

    可以发送到baz.qux.com 或其任何子域,无论请求来源如何(即是否从托管在baz.qux.comfoo.example.com 的网页发送)

    第二个cookie:

    Set-Cookie: Foo=bar; Path=/; Secure; SameSite=strict;
    

    只能发送到baz.qux.com(因为没有指定域,并且忽略IE异常)并且仅当请求来自qux.com站点时(即不会发送跨站点请求。)

    这有助于通过防止随机网站 (hacker.example.com) 向包含会话 cookie 的第三方 (baz.qux.com) 执行经过身份验证的请求来防止 CSRF。

    【讨论】:

    • 如果我没看错,那么设置域的结果与将SameSite 设置为lax...?
    • @Narfanator 不是真的。设置Domain 仍然允许在第一方和第三方上下文中发送 cookie(例如,当从另一个域请求 JS 或图像时)。但是,SameSite=Lax 只允许在第一方上下文中使用 cookie。
    • 等待...域意味着如果请求来自或去往该域,则发送 cookie?
    • @Narfanator 去那个域
    猜你喜欢
    • 2017-06-10
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 2021-02-03
    • 2020-05-17
    • 1970-01-01
    • 2012-01-22
    相关资源
    最近更新 更多