本文へスキップ
>_ITDITDセキュリティ対策プラットフォーム

用語辞典

セッション固定(Session Fixation)とは — 攻撃者が用意したIDでログインさせる穴

セッション固定(Session Fixation)は、攻撃者があらかじめ用意したセッションIDを被害者に使わせ、被害者がそのIDでログインした後に同じIDで“なりすます”攻撃です。仕組みの図解と、本命の防御(ログイン時のセッションID再生成・URLからIDを受け取らない・Cookie属性)を、攻撃手順を伏せて防御目線で解説します。

公開日 2026-06-11 更新日 2026-06-11 4分で読める

「攻撃者が用意したIDで、被害者がログインしてしまう」——それがセッション固定です。仕組みと、確実な防ぎ方を解説します(攻撃手順は載せません)。

なぜ成立するか(仕組み)

鍵は「ログイン前後でセッションIDが変わらない」設計にあります。変わらなければ、ログイン前に攻撃者が知っていたIDが、ログイン後も“認証済み”として通用してしまいます。

① 攻撃者が“あるセッションID”を被害者に使わせる(リンク等で)
↓ 被害者がそのIDのままログイン
② IDが再生成されない=同じIDが“認証済み”になる
↓ 攻撃者は最初からそのIDを知っている
③ 同じIDでアクセス=被害者になりすまし
ログインしてもIDが変わらないと、攻撃者が事前に知っていたIDがそのまま認証済みになってしまう。

CSRFXSS と組み合わされることもありますが、セッション固定そのものの本質は「ログイン時にIDを作り直していない」という一点です。

防御:ログイン時にIDを作り直す

1

ログイン成功時にセッションIDを再生成(最重要)

認証が成立した瞬間に、古いIDを破棄して新しいセッションIDを発行する(多くのフレームワークの session regenerate / renew)。事前に仕込まれたIDは即無効になる。権限が上がる操作(管理者昇格など)でも再生成する。
2

URL経由のセッションID指定を受け付けない

セッションIDはCookieで扱い、URLパラメータからのID指定は無視する。攻撃者が“固定したいID”を踏ませる入口を塞ぐ。
3

Cookie属性を固める

セッションCookieに HttpOnly(JSから読めない)・Secure(HTTPSのみ)・SameSite(別サイト起点の送信を抑制)を付ける。関連する乗っ取り経路をまとめて弱める。
4

適切な失効を設ける

一定時間・ログアウト・パスワード変更でセッションを失効させる。固定されたIDが長く生き続けないようにする。

当サイトの視点:フレームワークの『再生成』を外さない

セッション固定は、自前の凝った対策ではなく「ログイン時にIDを再生成する」一手でほぼ封じられます。重要なのは、フレームワークが用意しているこの仕組みをうっかり外さない・呼び忘れないこと。独自のセッション管理を自作するより、実績のある実装の既定動作に乗るのが安全です。当サイトは「認証や鍵まわりは自作しない・既定の安全側を外さない」を原則にしています。IDOR と同様、認証・認可まわりは“仕組みで毎回効かせる”のが肝です。

次に読む

よくある質問

Qセッション固定とセッション乗っ取りは何が違う?
A

セッション乗っ取り(hijacking)は、すでに発行された他人のセッションIDを“盗む”攻撃です。セッション固定(fixation)は逆で、攻撃者が“自分の知っているID”を先に被害者へ使わせ、被害者がそのIDでログインするのを待つ攻撃です。盗むのではなく、最初から知っているIDを認証済みにさせるのが特徴です。

Q一番の防御は?
A

『ログインの瞬間にセッションIDを再生成する』ことです。多くのフレームワークやセッションライブラリにこの機能(session regenerate / renew)があり、認証が成立した時点で古いIDを捨てて新しいIDを発行します。これだけで、攻撃者が事前に仕込んだIDは無効になります。権限が上がる操作(管理者昇格など)でも再生成します。

QURLにセッションIDを入れるのはなぜ危険?
A

URLにIDが乗ると、リンク共有・リファラ・ログ・ブラウザ履歴を通じて第三者に渡りやすく、攻撃者が“固定したいID”を被害者に踏ませる入口になります。セッションIDはURLパラメータではなくCookieで扱い、URL経由のID指定は受け付けないのが安全です。