0

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

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

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

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

安全隧道请求 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。

我的错!

4

1 回答 1

0

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

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

于 2010-08-05T21:17:45.623 回答