見えるセキュリティ

セッション管理

SESSION MANAGEMENT

この概念とは?

セッション管理とは、Webアプリが利用者のログイン状態などを継続して扱うために、利用者とServer側のSessionを対応付けて管理する仕組みです。一般的なServer-side sessionでは、ServerがSessionを作成し、そのSessionを識別するSession IDをCookieとしてBrowserに保存します。対象となるその後のリクエストでBrowserがSession IDを送ることで、ServerはどのSessionに対応する利用者からのリクエストなのかを判断できます。

Webアプリは、一度ログインしただけで利用者を自動的に覚え続けているわけではありません。Browserが対象となるリクエストでSession IDを送り、ServerがそのSession IDに対応するSessionを探すことで、ログイン状態や利用者を継続して識別します。

THEME
auth
KIND
mechanism
REVIEW
self-reviewed ·

Session ID CookieとServer側のSessionでログイン状態を継続する流れ

この教材では、Server側でSessionを管理し、Session IDをCookieでやり取りする一般的なWebアプリの基本形を扱います。Cookieのセキュリティ属性やセッションを狙った攻撃、JWTなどの別方式については、今後の発展教材で扱います。

  • Browser

    利用者の操作を受け取り、Cookieを保存して送る

    現在のSTEP

    持ち物

  • Server

    利用者を認証し、SessionをServer側で管理する

    現在のSTEP

    持ち物

    • ログイン情報:ID / Password
STEP 01 / 06DERIVE · MOVE

1. Clientがログイン情報を送る

利用者がログインすると、BrowserはID・パスワードなどの認証情報をServerへ送ります。Serverは受け取った情報を使って、利用者が本人かどうかを確認します。

技術的な詳細を見る

実際の認証方法はWebアプリによって異なります。この教材ではID・パスワードによる認証を例にしますが、パスワードの保存方法や認証処理そのものは扱いません。

STEP 1 / 6: Clientがログイン情報を送る

現在のSTEP 1STEP 2STEP 3STEP 4STEP 5STEP 6

この概念の要点

  • 要点

    Sessionの実体はServer側にある

    一般的なServer-side sessionでは、ログイン状態などのSession情報はServer側で管理します。BrowserにはSessionそのものではなく、そのSessionを識別するためのSession IDを持たせます。

  • 要点

    BrowserはSession IDをCookieとして送る

    Serverから受け取ったSession IDはCookieとしてBrowserに保存され、条件に一致する次のリクエストでServerへ送られます。

  • 要点

    ServerはSession IDから利用者を特定する

    Serverは受け取ったSession IDを使って対応するSessionを探します。有効なSessionが見つかれば、そのSessionに紐づく利用者からのリクエストとして処理できます。

  • 要点

    ログアウトではServer側のSessionを無効化する

    ログアウトするときは、Browser側のCookieを削除するだけでなく、Server側のSessionも無効化することが重要です。

理解確認

ログイン後のWebアプリで、Serverが次のリクエストを「同じ利用者からのもの」と判断できる主な理由として、最も適切なものはどれですか?

参考資料

RELATED CONCEPTS