首页 > 解决方案 > 从支付网关重定向后,codeigniter 4 会话数据丢失

问题描述

PHP 7.3.23 和 CI 4.0.4 我在支付完成后重定向到 ccavenue 支付网关,会话数据丢失。它在控制台中显示消息为:

“通过指定其 SameSite 属性指示是否在跨站点请求中发送 cookie。” 因为 cookie 的 SameSite 属性未设置或无效,所以默认为 SameSite=Lax,这会阻止 cookie 在跨站点请求中发送。这种行为可以保护用户数据不被意外泄露给第三方和跨站点请求伪造。

标签: codeignitercodeigniter-4ccavenue

解决方案


您很可能确实希望将会话 cookie 设置为SameSite=Lax以改进对 CSRF 攻击的保护。听起来好像您的支付网关发送POST请求以将用户返回到您的站点。

您应该:

  • 处理没有会话 cookie 的返回请求。例如,该请求应该包含有效负载中的所有内容,以便您确定交易是否成功。然后,您可以显示带有链接的状态页面或类似页面,以允许用户继续访问其他页面。跟随任何这些链接将是同一站点导航,并将再次包含您的会话 cookie。

  • 使用POST/Redirect/GET模式,您可以在其中处理传入POST请求以从中提取详细信息,然后执行重定向到您站点上的另一个页面,该GET请求是同站点请求,并且您的会话 cookie 将再次可用。

我也在这里解释过:https ://goo.gle/samesite-3d-secure


推荐阅读