【せっしょんかんり】

セッション管理 とは?

最終更新:
💡 「ログイン中」の状態を安全に管理する

複数のHTTPリクエストを同じ利用者の操作として結び付け、ログイン状態や有効期限、終了を管理する仕組み。セッションIDやトークンの保護が重要。

📌 このページのポイント
リクエストを利用者の状態に結び付ける サーバーに状態を保存する方式の例 ブラウザ サーバー ログイン情報 Cookieに新しいID IDを保持 次のリクエスト:ID IDで参照 状態 ユーザー・権限・ 有効期限など 開始 → 確認・必要な更新 → 無効化 作成 確認・更新 無効化 HTTPS・Cookie保護・認証時のID更新 期限とログアウトをサーバーでも判定
CookieでIDを渡し、サーバーが状態を参照する例。緑は作成、青は確認・更新、赤は無効化。矢印はリクエストと応答、ストアへの参照、管理の流れを示す。更新で期限が無制限に延びる意味ではない。JWTを使う方式でも有効期限や失効の設計は必要。
ひよこ ひよこ
なぜセッションが必要なの?
ペンギン先生 ペンギン先生
HTTPだけでは前のやり取りからログイン状態を引き継がないので、複数のリクエストを結び付ける仕組みが必要なんだ。サーバー保存方式なら、Cookieで送る予測困難なセッションIDにユーザーの状態を紐付け、リクエストごとに有効か確認するよ。ログイン前の買い物かごなどにもセッションを使えるんだ。
ひよこ ひよこ
ペンギン先生 ペンギン先生
他人の有効なIDやトークンを使ってなりすます攻撃だよ。盗聴やXSS、攻撃者が用意したIDを使わせる固定攻撃などが問題になる。全通信のHTTPSとSecure、スクリプトからCookieを読ませないHttpOnly、ログインや権限変更時のID更新などを組み合わせるんだ。HttpOnlyだけでXSSによる不正操作をすべて防げるわけではないよ。
ひよこ ひよこ
JWTとセッションの違いは?
ペンギン先生 ペンギン先生
セッションはやり取りの状態を管理する仕組み、JWTは情報を表すトークンの形式だよ。JWT内の情報と署名などを検証する方式では、毎回セッションストアを参照しない設計もできる。ただし期限前に無効化するなら失効リストなどの状態管理が必要になる場合がある。JWTなら常に軽い、構成だけで使い分けが決まる、というものではないんだ。
ひよこ ひよこ
安全な実装のポイントは?
ペンギン先生 ペンギン先生
IDは安全な乱数で生成し、CookieにSecureとHttpOnlyを設定する。SameSiteも利用の流れに合わせて選ぶけれど、それだけでCSRF対策が完成するわけではないよ。ログイン時などにIDを更新し、無操作の期限と最大継続時間を設け、ログアウト時にはサーバー側でも無効化するんだ。保守されているフレームワークの機能を使い、設定と挙動を確認しよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「セッション管理」って出てきたら「ログイン状態を安全に維持する仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Session Management」 = セッション管理
💬 Session(会合・期間)をManagement(管理)する。ユーザーとサーバーの「会話の期間」を管理するよ

参考資料

← 用語集にもどる