在整个重定向过程中维护 SameSite“严格”会话 Cookie 策略

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

假设您有一个网站

A
,您可以通过 PHP 会话 cookie 控制该网站
A
受保护页面的登录和导航。为了获得最大的安全性,这些 cookie 都是
secure
httponly
,并且使用
samesite
等于
Strict
,并且仅限于
A
的域,因此也是“仅限主机”。

如果现在登录的用户在

A
上确认付款,某些银行/支付服务将自动重定向该用户以在相关服务的
B
页面上执行后续/多重身份验证。客户端响应该附加身份验证后,无论是或否,系统通常会将客户端重定向回
A

我现在想知道的是安全问题。使用上述会话cookie设置,重定向到

B
并返回
A
显然会导致客户端丢失会话,并在重定向到
A
后注销。

可以通过在服务器配置中将会话 cookie 的

SameSite
属性设置为
Lax
来避免这种情况。但是,如果我想保持
Strict
怎么办?

我想到的解决方案,但不知道如何在 PHP 中实现:

服务器上的会话 cookie 配置定义了

Strict
属性的
sameSite
值,正如我希望的那样,一般来说。当在
A
上确认付款时,该函数会在服务器端处理该确认,因此在重定向到
B
之前,将会话 cookie 的
samesite
值更改为
Lax
。然后,在
B
重定向到的页面上,一开始我将该值重置回
Strict

PHP 中可能有这样的事情吗?或者您是否愿意考虑创建一个具有

Lax
的全新会话 cookie,将您的
$_SESSION
数据复制到其中,然后在重定向后将
$_SESSION
数据取回到您用于的 cookie 中使用
A
sameSite="Strict"
上进行会话?

或者任何其他更适合的解决方案?

php security session cookies session-cookies
1个回答
1
投票

据我所知,支付提供商通常需要在 GET 请求中传递某种签名的交易令牌。此类令牌将与重定向一起在 GET 中发回。

在这种情况下,将会话数据分配给站点 A 中生成的交易令牌,将带有重定向的令牌发送到站点 B,并在从站点 B 接收到带有重定向的令牌时恢复会话数据。

令牌必须经过签名,因此站点 A 和 B 必须确保它源自站点 A。

这需要采取额外的控制措施,以防止拥有此类令牌的人劫持会话:必须采取某种额外的会话验证,例如浏览器指纹识别。

在这种情况下,无需获取相同的会话 cookie。

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