默认情况下,SameSite = Lax-已在Chrome 80稳定版中运行(尽管并非所有人)

前几天,一位细心的同事(感谢您,Lena)报告了一个奇怪的错误-服务器通常在浏览器中设置cookie,但没有返回。一切都在前一天完成,但现在已设置好cookie,但几秒钟后它神奇地消失了(尽管它应该持续24小时)。团队中只有少数人和新的Chrome 80都复制了该版本,但是Chrome中的其余版本具有完全相同的版本,一切正常。在其他浏览器中,一切都像时钟一样。神秘。他们开始弄清楚了,过了一段时间,Chrome控制台注意到响应标题设置cookie的警告:
A cookie associated with a cross-site resource at _your_domain_ was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`.

他们开始研究它是什么,然后逐渐弄清错误是如何产生的,为什么不是每个人都显示出来。由于我们的服务必须处理来自不同域的请求,因此这SameSite只是我们的情况。他们补充说SameSite=None; Secure,问题为我们解决了。

这是为什么?


最初,根据HTTP标准,浏览器将针对任何请求的cookie(或仅cookie)发送到相应的域。这为CSRF攻击开辟了机会,也就是说,在某些情况下,允许无良的人们以毫无戒心的幌子使用cookie来获取某些资源。

在2016年,引入SameSite一个属性,该属性使您可以控制如果页面将请求发送到另一个域时浏览器是否将发送cookie。如果请求是从第三方站点执行的,则开发人员将有机会阻止其Cookie的传输。为此,必须将属性SameSite显式设置为Strict。(Cookie仅在请求并从其所属的域过渡时传输),或Lax(Cookie在通过直接链接从其他站点过渡到该站点时传输,但在其他请求时则不传输,例如,在AJAX请求或上传图片时) )缺席SameSite是等效的SameSite=None,也就是说,默认情况下,仍然会根据任何请求发送cookie。

五月2019年,谷歌Chrome浏览器开发人员宣布,他们将逐步改变这种行为,并解释缺席SameSite作为SameSite=Lax(更多在这里)也就是说-默认情况下,浏览器将阻止将Cookie的请求从当前页面传输到其他资源,除非直接单击链接。 Firefox和Edge开发人员已经宣布,随着时间的推移,他们还将在其浏览器中实现此更改。

对于用户而言,此浏览器行为更为安全。站点和Web服务的开发人员需要记住,如果他们仍然需要在从其他站点进行请求时接收其cookie,则他们将必须显式设置其cookie属性SameSite=None, SecureSecure-因为这样的请求还应该仅通过安全通道到达服务器)

由于创新改变了当前的标准,并且并非所有站点都能迅速适应,因此逐渐过渡到新行为。最初,仅对有限数量的Chrome beta版用户启用了此功能,现在,他们的数量正在逐渐增加。实际信息可在此处获得链接上的最新条目:
上次更新时间为2020年3月9日。

我们已开始强制实施Chrome 80稳定版的新行为,仅针对100%的用户。受控推出仅限于有限的初始人群,
也就是说,beta测试期已过,Chrome开发人员已开始慢慢在普通用户中加入新功能。从原则上讲,这是很好的,因为它确实更安全。

您可以通过以下设置恢复旧的行为:在Chrome地址栏中,输入chrome://flags,转到页面,找到SameSite作为默认cookie,然后将其设置为Disabled。但这比普通用户更适合测试。同样,如果您的Chrome 80仍然有旧的行为,则可以通过将相同设置设置为Enabled来强制执行新功能

因此,如果您的站点在从不同域发出请求时需要接收Cookie,请为即将发生的更改做好准备(无论谁准备就绪,都可以这样做)。对所有人都好!

新增者:
Xdenser注释中指出某些较旧版本的浏览器不支持SameSite=None,根本不接受此类cookie或以非标准方式处理它们。其中包括台式机和移动设备的浏览器。https://www.chromium.org/updates/same-site/incompatible-clients页面提供了浏览器列表以及针对该问题的可能解决方案(使用伪代码,但非常详细)。作者建议按标题检测有问题的浏览器版本useragent,而不要完全设置其cookie属性SameSite=None

新增2:
针对COVID-19的情况,自2020年4月3日起,Google暂时中止在SameSite的处理中执行上述更改,以确保Internet服务的平稳运行。在已应用更改的设备上,它们将被取消。
(c)blog.chromium.org/2020/04/temporarily-rolling-back-samesite.html

来源:
web.dev/samesite-cookies-解释性
www.chromium.org/updates/same-site
www.chromestatus.com/功能/ 5088147346030592
www.chromium.org/updates/same-site/incompatible-clients
blog.chromium.org/2020/04/temporarily-rolling-back-samesite.html

All Articles