まず概論的なお話からいきます。
まず「セッションの固定化」は、攻撃者がユーザに特定のセッションを使用させるもの。
これを防ぐために下記の対策すべてが必要です。
・php.iniファイルで下記を設定する。
session.use_trans_sid = 0
session.use_only_cookies = 1
・ユーザー認証や機密情報の登録ほか、セッションに変更があるときには必ずsession_regenerate_id()を行う。
一方の「セッションハイジャック」は、推測したり盗聴したりしてユーザのセッションを盗むものです。
セッションハイジャックを困難にするために私は以下の施策を行っています。
1.php.iniファイルでハッシュを強化する。
session.hash_function
→session.hash_function = sha256またはsession.hash_function = sha512
session.hash_bits_per_character = 5
→セッションIDで使用可能な文字種を増やす
-
セッション名を変更する。
デフォルトのPHPSESSIDは使用せず、session_name()で変更します。session_name()はsession_start()の前に使用します。
-
$_SERVER['HTTP_USER_AGENT']や$_SERVER['REMOTE_ADDR']などをセッション変数に保存し、リクエストごとに検証します。
偽造は可能ですが、やらないよりはましです。
4.セッションIDは頻繁に変更するようにします。
毎回ではないにしても適切なタイミングで変更するようにします。
参考になりますでしょうか。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。