セッション(Session)とは、利用者がサービスを使い始めてから終えるまでの、ひとつながりのやり取りと、その間に保たれる状態のことです。Webでは、ログインしている状態を保つ仕組みとしてよく登場します。
現実世界に例えると、セッションは店で渡される番号札のようなものです。店員は客の顔を覚えていなくても、札の番号で誰の注文かを判別できます。帰るときに札を返せば、そのつながりは切れます。
クッキーとの関係
| 項目 | セッション | クッキー |
|---|---|---|
| 置き場所 | サーバー側 | 利用者の端末側 |
| 持つもの | 中身のデータ | 番号札にあたる文字列 |
| 見られる心配 | 少ない | 端末側なので大きい |
| 消えるとき | 期限切れやログアウト | 削除や期限切れ |
なぜ必要なのか
Webの通信には、もともと記憶がありません。ページを開くたびに毎回まったくの初対面として扱われる仕組みのため、そのままではログイン状態も買い物かごの中身も保てません。この欠けた記憶を補うのがセッションです。
どう実現しているか
やり方は素朴です。ログインに成功すると、サーバーが推測できない長い文字列を発行して端末へ渡します。以降の通信ではその文字列が毎回送られ、サーバーは対応する情報を照合します。この文字列がセッションIDです。
中身はサーバー側にある
安全上、意味のある設計です。端末が持っているのは番号だけで、名前や権限といった中身はサーバー側に保管されています。端末側のデータを書き換えられても、権限まで勝手に変えることはできません。
期限が切れる理由
放っておくと切れるのには意味があります。席を離れた隙に操作されることを防ぎ、あわせてサーバー側に溜まる情報を整理するためです。銀行のように厳しいものは数分、日常的なサービスは数週間と、性質に応じて設定されます。
盗まれると成りすまされる
いちばんの脅威がここです。セッションIDを何らかの方法で盗まれると、パスワードを知らなくても本人として操作されてしまいます。通信を暗号化する、端末側から読み取れないようにする、ログイン時に番号を作り直す。この三つが基本の対策です。
ログアウトの意味
操作の中身がはっきりします。ログアウトとは、サーバー側で保持しているその情報を破棄し、番号札を無効にすることです。画面を閉じるだけでは番号が残るため、共用の端末では必ずこの操作をしてください。
Web以外でも使う言葉
用語としてはもっと広い意味を持ちます。サーバーへ接続してから切断するまでの一区切りや、通信の階層構造における接続の管理も、同じくセッションと呼ばれます。文脈によって指すものが変わる語だと覚えておくと混乱しません。
あわせて知っておきたい用語
- クッキー(Cookie):
ブラウザ側に小さなデータを保存する仕組みです。 - セッションステート:
セッションの間だけ保持される状態のことです。 - ログイン:
利用者を識別して利用を始める手続きです。 - HTTPS:
Webの通信を暗号化してやり取りする方式です。

コメント