0

まず、はい、これは大きなセキュリティNONOであることを知っています。しかし、シナリオはこれです。

Web ショップのチェックアウトでは、SSL を介してチェックアウト フォームをプロキシできる支払いゲートウェイを使用します。

(以下のURLはあくまでも理論であり、他のURLも申請に適用されます)

仕組みとして、ウェブサイトはユーザーを https://gateway.org/secure-tunnel.php にリダイレクトし、次のようなクエリで URL を渡します ?url= http://myshop.com/cc-form.php <- 必要urlencode されます。

セキュア トンネルは 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っぽい方法を知っている場合は、アドバイスをお願いします!

    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 に答える