gpt4 book ai didi

firefox - 之前设置的 "Samesite: Strict"cookie 在 document.cookie 中不可用 Firefox 和 Safari

转载 作者:行者123 更新时间:2023-12-02 18:15:22 25 4
gpt4 key购买 nike

我们在用户 session 开始时为 XSRF/CSRF 设置了 cookie。在某些时候,用户导航到不同的域(例如付款),执行一些操作,然后导航到我们的域。返回我们的域后,Firefox 和 Safari 无法读取设置为 Samesite: Strict 的 Cookie,Chrome 可以。对于 Chrome 和 Firefox(但不是 Safari),它确实显示在 cookie 的开发人员工具部分下。

samesite explanation on MDN解释说,在将来的请求中,cookie 将在请求 header 中一起发送。对于所有三种浏览器来说,情况都是如此。解释尚无定论的是是否应该可以通过 document.cookie 读取此 cookie。对于 Firefox、Safari 和 Chrome,我们可以读取“Lax”cookie,但仅对于 Chrome,我们可以读取“Strict”cookie。页面刷新时也是如此,但打开新选项卡时则不然(即仅通过导航)。

这是 Safari 和 Firefox 或 Chrome 中的错误 - 还是规范尚无定论?规范(w3?)是什么?

可以使用具有两个虚拟主机 test.internalsite.comtest.externalsite.com 的网络服务器在本地轻松重新创建它,并且这些页面包含一些 PHP:

<?php
setcookie("CSRFLax", "hiLax", array("path"=>"/", "samesite"=>"Lax", "domain"=>"test.internalsite.com"));
setcookie("CSRFStrict", "hiStrict", array("path"=>"/", "samesite"=>"Strict", "domain"=>"test.internalsite.com"));
?>
<html>
<body>External site
<p><a href="http://test.externalsite.com">Go to External site</a></p>
<p>Document cookie: <script>document.write(document.cookie);</script></p>
</body>
</html>

还有

<html>
<body>External site
<a href="http://test.internalsite.com">Go to internal Site</a>
</body>
</html>

最佳答案

根据我们的安全官员的建议,他不愿意讨论使用“宽松”cookie 代替“安全”cookie 的可能性(因为我认为除了语义之外没有其他原因),我们实现了一个简单的解决方法通过刷新页面。这可以在 Chrome 和 Safari 中检索严格 cookie。

var canReadStrictCookie = function(cookies) {
return cookies.toLowerCase().indexOf('mySameSiteSecureCookieName') !== -1;
};

if(document.location.href.indexOf('jmkCheck') === -1 && !canReadStrictCookie(document.cookie)){
document.location.href='?jmkCheck';
}

如果您自己可以控制 cookie,我强烈建议您使用“宽松”设置。这个名称令人困惑,但这并不是安全性松懈(事实上,它比引入同站点之前更安全)。

关于firefox - 之前设置的 "Samesite: Strict"cookie 在 document.cookie 中不可用 Firefox 和 Safari,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55937018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com