SameSite=Lax和SameSite=Strict在接收Cookies方面有什么区别?

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

有资料说,与 SameSite=Strict, SameSite=Lax 当我们使用直接和顶层链接加载另一个网站时,它可以工作......但正如我测试的那样,当我打开一个来自 <a href="mysite.com">,浏览器将其视为输入 mysite.com 直接在地址栏中,这样它就能收到所有的cookies,甚至是 SameSite=Strict 的。

同样的事情发生在 <form action="mysite.com", method="get"><form ... method="post>"<form> 请求使所有的cookie完全加载。

那么这两者之间有什么区别呢?SameSite=StrictSameSite=Lax?

cookies http-headers xss cross-site samesite
1个回答
0
投票

严格和宽松是关于当你的浏览器 发送 饼干。您测试时,您的浏览器 接收 Cookie。

浏览器使用SameSite设置来决定何时进行 发出 饼干回到它的起源。

引自 同一网站cookies解释:

如果您将SameSite设置为Strict,您的cookie将只在第一方上下文中发送。在用户术语中,只有当cookie的站点与浏览器URL栏中当前显示的站点匹配时,才会发送cookie。因此,如果promo_shown cookie的设置如下。

Set -Cookie: promo_shown=1; SameSite=Strict(严格)

当用户在您的网站上时,cookie将随着请求被发送。然而,当跟随一个链接进入您的网站时,例如从其他网站或通过朋友的电子邮件,在最初的请求中,cookie将不会被发送。

相反,SameSite=Lax则允许浏览器为顶级导航发送cookie,比如上面提到的:跟随其他网站的链接或点击电子邮件中的链接。

以下是一个例子 MDN摘要,包括第三个值,SameSite=None。

SameSite属性接受三个值。

Lax

Cookies允许通过顶级导航发送,并将随第三方网站发起的GET请求一起发送。这是现代浏览器的默认值。

严格

Cookies只会在第一方的情况下发送,不会与第三方网站发起的请求一起发送。

Cookies将在所有情况下发送,即允许跨源发送。

None曾经是默认值,但最近的浏览器版本将Lax作为默认值,以对某些类别的跨站点请求伪造(CSRF)攻击有合理的强大防御。

在最新的浏览器版本中,"无 "需要使用安全属性。

如果你的例子中的HTML表单在另一个网站上,而不是mysite.com,如果它们有SameSite=Strict,cookie不会被发回mysite.com。如果SameSite=Lax,并且表单的method="get",浏览器会发送cookie,但如果是method="post",则不会。

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