0

Google 已表示他们将SameSite=Lax在 2020 年 2 月默认将属性添加到 cookie。在准备工作中,我们已经开始测试使用SameSite=Lax我们所有的 cookie,包括我们的会话 cookie ( PHPSESSID)。

我们遇到了一个问题,我们将用户重定向到 WorldPay,以便他们可以添加他们的银行账户。WorldPay 然后将新帐户的详细信息发回我们的网站。问题是,因为这是一个跨站点请求,当用户返回我们的站点时,他们的浏览器不会加载会话 cookie,因此他们会退出我们的网站。

我只是想知道是否有关于如何处理这个问题的最佳实践。SameSite防止跨站点请求伪造攻击。在我们的例子中,我们的跨站点请求不是伪造或攻击,所以我们想做相当于将请求列入白名单。

我想我们可以在将用户发送到 WorldPay 之前将会话 ID 存储在数据库中,然后在用户返回时使用之前的会话 ID 恢复会话。当然,挑战在于知道回来的人和离开的人是同一个人。我想我们可以通过设置一个SameSite=None带有秘密令牌的 cookie 来做到这一点,并在返回时重新检查该令牌。

这个问题一定是SameSitecookies新时代的常见“问题”。我有兴趣听听你是如何解决的?

4

1 回答 1

1

SameSite=Lax仅发送用于“安全”顶级导航的 cookie,这是不包括POST. 由于您在此处特别需要跨站点 cookie,因此应将其标记为SameSite=None; Secure.

在https://web.dev/samesite-cookie-recipes和 PHP 示例中有更多上下文在https://github.com/GoogleChromeLabs/samesite-examples/blob/master/php.md

于 2019-11-14T23:54:32.007 回答