« セッションアダプションとセッションフィクセイションとセッションハイジャックの違いとはPHPのセッションアダプション脆弱性は修正して当然の脆弱性 »

2 コメント

コメント from: Yasuo Ohgaki [メンバー] メール
Yasuo Ohgakiおかしなクッキーが設定されている状態なのか判別したい方も居ると思います。

その場合、セッションが最初に初期化フラグをクッキーとセッション変数に保存します。フラグは適当なランダム文字列でよいです。おかしなセッションID用のクッキーが設定された場合、正しくsession_regenerate_idが呼ばれていると、セッション変数には初期化フラグが残らないか一致しない値が残ります。クッキーには初期化フラグがあるのにセッション変数には無い状態またはフラグの値が異なる状態になった場合、おかしなクッキーが設定されている状態です。

セッションデータがタイムアウトで削除されると、不正なセッションID用のクッキーとして検出されてしまいます。実際に実装する場合、フラグを保存するクッキーにフラグ、不正と検出された回数、秘密のの文字列のハッシュダイジェスト値を保存して不正と検出された回数が2回以上であるかチェックする必要があります。

セッションアダプション脆弱性が無くなったセッション管理モジュールになった場合、session_startを呼ぶ時に同じ事をすれば、同様におかしなセッションIDクッキーの有無が検出できます。今から同じコードにしたい場合は、session_startの直後にsession_regenerate_idを呼べば良いです。

どのプラットフォームのセッション管理でも同じ手法でおかしなクッキーを検出できます。
2012/12/10 @ 10:39
コメント from: Yasuo Ohgaki [メンバー] メール
Yasuo Ohgakiおかしなクッキーは古いブラウザならセッションID用のクッキーヘッダに複数の値が設定されているかどうか?で簡単に判別できました。

ブラウザが1つのクッキーだけを戻すようになりサーバ側の解釈により、クッキーの値が異なる、という状態はなくなりましたが、おかしなクッキーの検出は面倒になりました。

今の仕様の方が綺麗な感じはしますが、不便になりました。
2012/12/10 @ 10:54

コメントを残す


Your email address will not be revealed on this site.

頂いたURLは表示されます。
PoorExcellent
(改行が自動で <br /> になります)
(Name, email & website)
(ユーザに、メッセージ・フォームを通じた連絡を許可します (あなたのメール・アドレスは表示されません))