最終更新日:2026年9月17日
fe fe-technology security web-security
まず結論
Webシステムで利用者がログアウトしたときは、Webサーバ側でセッションIDを無効化することが重要です。
基本情報技術者試験では、次のように切り分けると判断しやすくなります。
ログアウトした
→ サーバ側でセッションIDを無効化
一定時間操作がない
→ セッションタイムアウト
ブラウザのキャッシュを消す
→ セッションID対策そのものではない
問題文に「セッション乗っ取りの機会を減らす」「ログアウト時」とあれば、不要になったセッションIDを再利用できない状態にすることを考えます。
直感的な説明
ログイン後のWebシステムでは、利用者がページを移動するたびにIDとパスワードを入力するわけではありません。
その代わりに、Webサーバが発行した セッションID を使って、同じ利用者かどうかを判断します。
ログイン
↓
セッションIDを発行
↓
ブラウザがセッションIDを送信
↓
サーバがログイン済みの利用者と判断
この仕組みは便利ですが、セッションIDを第三者に盗まれると、その第三者が正規利用者になりすましてアクセスできる可能性があります。
これが セッション乗っ取り(セッションハイジャック) です。
そのため、利用者がログアウトしたら、使用していたセッションIDをそのまま有効にしておいてはいけません。
ログアウト
↓
サーバ側でセッションIDを無効化
↓
同じIDが送られてきても受け付けない
この「再利用できなくする」という考え方がポイントです。
定義・仕組み
セッションとは、Webサーバが複数のHTTPリクエストを同じ利用者からの一連の操作として扱うための仕組みです。
HTTPは本来、1回のリクエストごとに独立しています。そのため、ログイン状態などを継続して管理するには、利用者を識別する仕組みが必要です。
一般的には、次のような流れになります。
1. 利用者がログイン
2. WebサーバがセッションIDを発行
3. ブラウザがCookieなどでセッションIDを保持
4. 以後のアクセスでセッションIDを送信
5. Webサーバが対応するセッション情報を確認
セッションIDそのものがパスワードではなくても、ログイン済み状態を識別するための重要な情報です。
ログアウト時に必要な処理
ログアウトでは、単にログイン画面へ戻すだけでは不十分です。
サーバ側で、現在のセッションを終了させる必要があります。
有効なセッションID
→ ログアウト
→ 無効なセッションID
これによって、第三者が古いセッションIDを持っていたとしても、そのIDを使ったアクセスを拒否できます。
ブラウザ側の削除だけでは不十分
ブラウザ側のCookieやセッションIDを削除することも有効ですが、それだけでは十分とは限りません。
例えば、攻撃者が既にセッションIDを盗んでいた場合を考えます。
正規利用者
→ ブラウザからCookieを削除
攻撃者
→ 盗んだセッションIDを送信
サーバ側でそのセッションIDがまだ有効なら、攻撃者のアクセスを受け付けてしまう可能性があります。
そのため、試験では サーバ側で無効化する ことが重要な判断軸になります。
このテーマは、基本情報技術者試験の「情報セキュリティ」と関係する内容です。公式の出題範囲やシラバスは、IPA:基本情報技術者試験 から確認できます。
どんな場面で使う?
セッションIDの無効化は、ログイン機能を持つWebシステムで使われます。
例えば、次のようなサービスです。
- ネットショッピング
- インターネットバンキング
- 会員制Webサービス
- 社内システム
利用者がログアウトした後もセッションが残っていると、不要な認証状態が継続します。
そこで、ログアウト処理ではサーバ側のセッションを終了させます。
また、利用者がログアウト操作を忘れる場合もあります。
そのため、一定時間操作がなければ自動的にセッションを無効化する セッションタイムアウト も重要です。
利用者がログアウト
→ 明示的にセッションを無効化
一定時間操作なし
→ タイムアウトでセッションを無効化
この2つをセットで覚えると、試験問題を切り分けやすくなります。
よくある誤解・混同
誤解1:ブラウザのキャッシュを消せばよい
ブラウザのキャッシュは、Webページや画像などを一時的に保存する仕組みです。
キャッシュ削除
→ 表示データなどを削除
セッション無効化
→ ログイン状態を識別するIDを使えなくする
目的が違います。
セッション乗っ取り対策としてログアウト時に行うべき中心的な処理は、サーバ側のセッションID無効化です。
誤解2:セッションIDを保存すれば安全になる
セッションIDを保存すること自体は、無効化とは逆です。
問題文が「ログアウト時」「乗っ取りの機会を減らす」となっている場合は、保存ではなく 使えなくする 方向を考えます。
誤解3:ブラウザ側だけでセッションIDを消せば十分
ブラウザ側で削除しても、サーバ側で有効なままなら、盗まれたセッションIDが再利用される可能性があります。
ブラウザ側だけ削除
→ サーバ側では有効な可能性あり
サーバ側で無効化
→ 古いIDを拒否できる
誤解4:セッションタイムアウトとログアウトは同じ
どちらも最終的にはセッションを無効化しますが、きっかけが違います。
| 処理 | きっかけ |
|---|---|
| ログアウト | 利用者が明示的に終了操作を行う |
| セッションタイムアウト | 一定時間操作がない |
誤解5:セッションIDはログイン中ならずっと同じでよい
ログイン時や権限変更時など、重要なタイミングではセッションIDを再生成する対策もあります。
これは、攻撃者が事前に知っているセッションIDを利用する セッション固定攻撃 への対策と関係します。
FE試験ではまず、
ログアウト
→ セッションIDを無効化
という基本を優先して押さえます。
まとめ(試験直前用)
- セッションIDは、ログイン済み利用者を識別する重要な情報
- ログアウト時はサーバ側でセッションIDを無効化する
- ブラウザのキャッシュ削除は、セッションID無効化とは別の処理
- 一定時間操作がない場合は、セッションタイムアウトで無効化する
- 「ログアウト後に同じセッションIDを使わせない」が判断の中心
試験中は、次の形で思い出すと判断しやすくなります。
ログアウト
→ 古いセッションIDを使えなくする
→ サーバ側で無効化