创建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
,表示:
来自MDN的SameSite cookie使服务器要求不要将cookie与跨站点(站点由可注册域定义)一起发送,从而为跨站点请求伪造攻击(CSRF)提供了一定的保护。
如果两个Cookie都在域baz.qux.com
上进行了设置,那么这两个Cookie在行为上有什么区别?
SameSite=strict
属性如何防止CSRF阻止具有指定域的其他cookie阻止CSRF?
答案 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。