【问题标题】:Pass and restore a session id in zend framework在 zend 框架中传递和恢复会话 id
【发布时间】:2010-08-05 19:56:06
【问题描述】:

首先,是的,我知道这是一个很大的安全NONO。但场景是这样的;

在网店结账时,我使用支付网关,它可以通过他们的 SSL 代理我的结账表单。

(以下网址只是理论,其他网址申请)

它的工作方式是,网站将用户重定向到他们的 https://gateway.org/secure-tunnel.php 在这样的查询中传递一个 url ?url=http://myshop.com/cc-form.php

安全隧道请求 url - 在文档中的 url 上添加一些魔法 - 并将其显示给用户。

现在我想将会话 ID 传递给 cc-form.php url,并让该部分正常工作。但是请求的页面没有获取传递的会话 ID。

对此有什么想法吗?

以下来自我的application.ini

resources.session.name = UPSSESSID
resources.session.save_path = APPLICATION_PATH "/../data/session"
resources.session.use_only_cookies = off
resources.session.referer_check = off
resources.session.remember_me_seconds = 864000

另外,在研究过程中,我发现 Suoshin 扩展可能会导致一些问题,所以我将其添加到 .htaccess 中

php_flag suhosin.session.cryptua off

我使用通往付款表单的路线

$this->_helper->url->url(array(session_name() => Zend_Session::getId()), 'payment')

编辑:可能的,相当狡猾的解决方案

我实际上设法通过将其插入到我的引导文件中的_initApplication() 来恢复会话。它相当狡猾,所以如果有人知道更好 - 更 ZF'ish - 方式请指教!

    if(isset($_GET[$appConfig->resources->session->name])) {
        session_id($_GET[$appConfig->resources->session->name]);
    }

编辑:DOH!

嗯.. 原来之前的编辑是不需要的。就在我将前几行添加到引导程序之前,我还更改了 url 布局。

将其从 /pay/UPSSESSID/{session-id-here} 更改为 /pay?UPSSESSID={session-id-here} - 这实际上是问题的根源 :(

现在我已经从引导程序中删除了这些行,并且我正确恢复了 sessionId。

我的错!

【问题讨论】:

  • 我假设 wan'twant 而不是 don't want 的组合/错字?跨度>
  • 如果您解释为什么您需要这样做,我认为您可能会得到更多的回应...我不确定您是否真的了解这对安全的影响.
  • 我确实理解这对安全的影响,实际上是在我的第一段中写的。我需要这个来确保用户会话不会在服务器之间的重定向中丢失。一旦用户点击“我想用信用卡付款” - 用户将被定向到(PG)支付网关公司的网络服务器,该服务器从我的服务器代理信用卡表单页面。 cc-form-page 中的表单提交到 PG-server 上的另一个页面,并添加了 OK-URL 和 fail-URL 作为参数....
  • ... 如果 CC 结帐正常,用户将被定向到我的服务器上的 OK-URL,该 URL 以“已付款”完成订单。所以OK-URL和fail-URL也需要SessionID,所以用户完成支付后依然是登录状态。
  • 所有这一切都是由于丹麦的一些规则,基本上拒绝在商店服务器上使用信用卡表格,即使他们获得了 SSL。所有包含 CC 数据的输入和请求都应通过授权的支付网关及其 SSL。归根结底,这是为了保护消费者。我可以使用支付窗口,但它会带来所有其他类型的问题 - 弹出窗口拦截器等。

标签: php zend-framework sessionid


【解决方案1】:

默认情况下,PHPSESSID 不能作为 URL 重写的一部分传递。

?PHPSESSID={session_id}-format 解决了我的问题。

【讨论】:

    猜你喜欢
    • 2011-05-26
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多