Domain 与 SameSite strict 的 cookie 之间的安全差异是什么?

问题描述 投票:0回答:1

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

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

上面的 cookie 将仅与对域的请求一起使用

baz.qux.com

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

上面的 cookie 省略了

domain
属性,这意味着将使用 cookie set 所在的域(不包括子域,IE 例外)。它还具有属性
SameSite=strict
,这意味着:

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

来自MDN

如果这两个 cookie 都设置在域上,那么它们之间的行为有何差异

baz.qux.com

SameSite=strict
属性如何防止 CSRF,而具有指定域的其他 cookie 却无法做到这一点?

security cookies csrf
1个回答
27
投票

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

所以第一个饼干:

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

可以发送到

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

第二块饼干:

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

只能发送到

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

这有助于防止随机网站 (

hacker.example.com
) 向包含会话 cookie 的第三方 (
baz.qux.com
) 执行经过身份验证的请求,从而防止 CSRF。

© www.soinside.com 2019 - 2024. All rights reserved.