PHP:Cookieを使わずにセッションを使う
PHP (55 items)
2006年05月31日
通常、セッションを扱う際、そのセッションIDの保存にはCookieを使います。
セキュリティ的にも、このCookieを使う方法でいいんですが、携帯サイトのようにCookieを使えない環境でもセッションを使いたい場合はどうするのか。
以下、マニュアルにもありますが、URLに引っ付けて受け渡す事ができます。
セキュリティ的にも、このCookieを使う方法でいいんですが、携帯サイトのようにCookieを使えない環境でもセッションを使いたい場合はどうするのか。
以下、マニュアルにもありますが、URLに引っ付けて受け渡す事ができます。
PHP: セッション処理関数(session) - Manual
セッションIDの受渡し
セッションIDの通知を行うためには次の二つの方法があります。
・Cookie
・URLパラメータ
sessionモジュールは、両方の方法をサポートします。 Cookieは最適ですが、(クライアントがCookieを受け入れない可能性があるため)信頼性がなく、これに依存することができません。2番目の方法は、セッションIDを直接URLに埋め込みます。
マニュアルにも書いてますが、具体的には、
・PHPのコンパイル時、オプションに「--enable-trans-sid」を指定する
か、
・php.iniの”session.use_trans_sid”を”1”に設定する
事で、CookieじゃなくURLで受け渡されます。
「URLで受け渡されるなら、何か修正せなあかんのちゃうん」と思ったりしますが、この設定だけです。ロジックの修正は要りません。
これで、自動的にhtml内の各リンク(aタグ)に勝手にセッションIDが付加されます。formタグには、hidden項目として、これまた勝手にセッションIDが付加されます。
ちなみに、
なので、リンクのURLは必ず相対パスでないといけません。(自サイトへの絶対URLのリンクであっても駄目)
PHP 4.3.1以下のバーションでは、”session.use_trans_sid”を”1”にする事での脆弱性も指摘されていますので注意して扱いたいですが、便利な機能ですね。
・PHPのコンパイル時、オプションに「--enable-trans-sid」を指定する
か、
・php.iniの”session.use_trans_sid”を”1”に設定する
事で、CookieじゃなくURLで受け渡されます。
「URLで受け渡されるなら、何か修正せなあかんのちゃうん」と思ったりしますが、この設定だけです。ロジックの修正は要りません。
これで、自動的にhtml内の各リンク(aタグ)に勝手にセッションIDが付加されます。formタグには、hidden項目として、これまた勝手にセッションIDが付加されます。
ちなみに、
session.use_trans_sidが有効な場合、 相対URIは自動的にセッションIDを含むように変換されます。
なので、リンクのURLは必ず相対パスでないといけません。(自サイトへの絶対URLのリンクであっても駄目)
■こんな感じで付加されます
○リンク
<a href="../index.php?PHPSESSID=xxxxxxxxxxxxxxx">リンク</a>
○form
<form action="./index.php" method="post">
<input type="hidden" name="PHPSESSID" value="xxxxxxxxxxxxxxx" />
PHP 4.3.1以下のバーションでは、”session.use_trans_sid”を”1”にする事での脆弱性も指摘されていますので注意して扱いたいですが、便利な機能ですね。
前の記事 次の記事