【问题标题】:Laravel session killed when opening site in iframe in Firefox在 Firefox 的 iframe 中打开站点时,Laravel 会话被终止
【发布时间】:2022-01-22 01:53:37
【问题描述】:

这个问题似乎只影响 Firefox,然后只影响部分用户(没有明显的版本/安全设置差异)。我们的 Laravel 应用程序正在丢失会话。

我们有一个使用 iframed Opayo 服务器集成的支付集成。这将在 Laravel 应用程序的 iframe 中打开付款表单。提供了付款详细信息,并且付款成功 - 包括点击 Opayo webhook 以确认交易。

webhook 返回一个重定向 url,Opayo 使用它来重定向用户(自然在 iframe 中)。此重定向 url 只是与应用(即 iframe 父级)在同一站点上的 url。

在 iframe 加载重定向 url 时,站点会话立即被终止。最初,该 url 上的页面脱离了 iframe(设置 window.top.location),并且还进行了一些 ajax 调用 - 我删除了这两个操作,以确认它们不会以某种方式导致会话被破坏。

网站通过带有有效证书的 https 提供服务。会话 cookie 设置为安全、仅限 http 和同一站点“宽松”

什么可能导致这种行为?

【问题讨论】:

    标签: laravel session iframe opayo


    【解决方案1】:

    这是因为 iframe 并不完全是您系统上运行的页面。因此,如果 iframe 不在您的系统上,它将无法访问您应用程序中的 cookie。

    如果 iframe 来自您的应用程序,我建议您在 iframe 的 url 中使用查询参数来在 iframe 中传递这些必要的信息。比如:

    <iframe src="https://www.foo.bar?value=1&value_2=2"></iframe>
    

    【讨论】:

    • 谢谢,但我认为您误解了这个问题。会话是在我的应用程序中设置的,来自 Opayo 的重定向 url 是我的应用程序 url,我的重定向 url 包含用于突破 iframe 的 javascript - 它确实如此。问题是在该序列发生后,用户会话消失了。事实上,正如我的问题所述,即使我没有跳出 iframe,只要从我的网站请求一个 url 就足以破坏 Laravel 会话。我不希望 Opayo 页面能够访问我的会话,也不希望 Opayo 在我的应用程序上命中的 webhook。
    猜你喜欢
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-12
    • 2022-10-03
    • 1970-01-01
    • 2012-01-30
    • 2013-01-06
    相关资源
    最近更新 更多