[PHP-users 25695] Re: セッション情報の受け取り

Sumito_Oda oda @ bst.jp
2005年 5月 30日 (月) 04:13:44 JST


織田です。

>ファイルには、以下のようなロジックを書いておりますが
>one.cgi で記述している header 関数で飛ばした先の two.php で
>セッション情報を取得することができません。

それは、session.use_trans_sidが「session_start()されてから、
phpが出力するhtmlコンテンツ内の相対指定のURIリンク部分を
セッションIDを付加するように書き換える」という機能だからです。
header関数はHTTPのレスポンスヘッダを出力する関数です。
要するに、付加されないのは「仕様」です。

>header("Location:two.php");
最近、良くこの手の指定を見かけるのですが、
HTTPのLocationレスポンスヘッダで設定するURIは、絶対指定のURIです。
http://www.ring.gr.jp/pub/doc/RFC/rfc2396.txt
http://www.ring.gr.jp/pub/doc/RFC/rfc2616.txt

Webブラウザの中には、相対指定のURIであっても"それなりに"
解釈するものも多くありますが、クライアントの特殊な挙動を
前提とした作りは望ましいものとは言えません。

>PHPバージョンは 4.1.3 です。
また、
「URL埋め込みセッションIDにおける脆弱性?Fw:JPCERT/CC REPORT 2003-07-09」
http://ns1.php.gr.jp/pipermail/php-users/2003-July/017104.html
などを見れば、まずい選択肢(PHPのバージョンが古い)ということが
理解できるかと思います。

-- 
Sumito_Oda mailto:oda @ bst.jp


PHP-users メーリングリストの案内