セッション固定攻撃(session fixation)

あるサイトに対して、http://example.com/?PHPSESSID=abcdeのようにセッションIDを付けたリンクを設置することで、 セッションIDを固定化させてしまう攻撃です。

これを回避する方法は、次のようなものがあります。
(1) セッション変数内に特定の値を常に与えるようにし、もしその値が無かった場合には正しくふられたセッションIDではないと判断する。
(セッションIDの正当性をセッション変数内に埋め込む)
(2) ログイン処理など、そのサイトでの本来のセッションの使用を行う時点で(重要な情報を持たせるときに)、セッションIDを変更する。

セッションIDの正当性を確認する方法

(セッション変数 check_code があるかないかで判断する。)

session_start();
if (!isset($_SESSION["check_code"]) {
  session_regenerate_id();
  $_SESSION["check_code"] = 1;
}

セッションIDを変更する方法

session_start();
session_destroy();
session_start();
session_regenerate_id();

セッションIDを変更しても、au携帯(EZweb)では、条件によってはコンテンツのダウンロード時などに同じセッションIDを送ってしまうので注意してください。

気休め的な手法ですが、『 PHPSESSID 』を使わないで、session_name('HOGE');としてセッション名を変えてしまう。
ただし、サイトで使用されているセッション名がわかってしまった場合には意味がありません。
ログイン時点からセッションを使うようにして、セッション名を隠したとしてもログインできるユーザーの中に攻撃者がいないとも限りません。

関連記事

スポンサーリンク

Windowsを定時にシャットダウンするツール

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る