具有SameSite的Cookie和特定域之间的安全性区别是什么?

时间:2019-07-18 09:01:17

标签: security cookies csrf

创建Cookie时,我们可以通过设置domain属性来指定其使用位置。

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

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

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

上面的cookie忽略了domain属性,这意味着将使用设置设置cookie的域(排除子域,IE除外)。它还具有属性SameSite=strict,表示:

  

SameSite cookie使服务器要求不要将cookie与跨站点(站点由可注册域定义)一起发送,从而为跨站点请求伪造攻击(CSRF)提供了一定的保护。

来自MDN

如果两个Cookie都在域baz.qux.com上进行了设置,那么这两个Cookie在行为上有什么区别?

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

1 个答案:

答案 0 :(得分:3)

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

第一个cookie:

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

发送到baz.qux.com或其任何子域,而不管请求的来源是什么(即,是从baz.qux.com还是foo.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。