Maintain SameSite quot;Strictquot; Session Cookie Policy throughout redirect(在重定向过程中保持严格的SameSite会话Cookie策略(Q;))
问题描述
假设您有一个网站A
,您可以通过PHP会话Cookie控制A
受保护页面的登录和导航。因此,为了获得最大的安全性,这些Cookie都是secure
、httponly
,并且使用的samesite
等于Strict
,并且仅限于A
的域,因此也仅限于主机。
如果登录的用户现在在A
确认付款,一些银行/支付服务将自动重定向该用户在相关服务的B
页执行后续/多因素身份验证。在客户端响应该附加身份验证后,无论是是还是否,系统通常都会将客户端重定向回A
。
我现在想知道的是关于安全的问题。使用上述会话cookie设置,重定向到B
并返回到A
显然会导致客户端丢失会话,并在A
重定向后注销。
这可以通过在服务器配置中将会话cookie的SameSite
属性设置为Lax
来避免。但是,如果我想将其保持为Strict
怎么办?
我想到的解决方案,但不知道如何在PHP中实现:
服务器上的会话cookie配置定义了sameSite
属性的Strict
值,通常我希望如此。当在A
上确认支付时,在服务器端处理该确认的函数,因此在重定向到B
之前,将会话Cookie的samesite
值更改为Lax
。然后,在B
重定向到的页面上,我将该值重新设置为Strict
。
这样的事情在PHP中是可能的吗?或者,您是否更愿意考虑使用Lax
创建一个全新的会话Cookie,将$_SESSION
数据复制到其中,然后在重定向后将$_SESSION
数据恢复到您使用sameSite="Strict"
在A
上用于会话的Cookie中?
或任何其他更适合的解决方案?
推荐答案
据我所知,支付提供商通常需要在GET请求中传递某种签名的交易令牌。这样的令牌是在GET中发回的,以及重定向。
在这种情况下,当从站点B接收到带有重定向的令牌时,将会话数据分配给站点A生成的此类交易令牌,将带有重定向的令牌发送到站点B,并恢复会话数据。
令牌必须经过签名,因此站点A和站点B必须确保它源自站点A。
这需要额外的控制措施,以防止拥有此类令牌的人劫持会话:必须进行某种额外的会话验证,例如浏览器指纹识别。
在这种情况下,不需要获取相同的会话Cookie。
这篇关于在重定向过程中保持严格的SameSite会话Cookie策略(&Q;)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在重定向过程中保持严格的SameSite会话Cookie策略(&Q;)
- Oracle 即时客户端 DYLD_LIBRARY_PATH 错误 2022-01-01
- 覆盖 Magento 社区模块控制器的问题 2022-01-01
- openssl_digest vs hash vs hash_hmac?盐与盐的区别HMAC? 2022-01-01
- PHP foreach() 与数组中的数组? 2022-01-01
- 如何从数据库中获取数据以在 laravel 中查看页面? 2022-01-01
- 如何使用 Google API 在团队云端硬盘中创建文件夹? 2022-01-01
- Laravel 5:Model.php 中的 MassAssignmentException 2021-01-01
- 使用 GD 和 libjpeg 支持编译 PHP 2022-01-01
- PHP - if 语句中的倒序 2021-01-01
- 如何在 Symfony2 中正确使用 webSockets 2021-01-01