PUBLIC
WEBセッション6 MIN READ

TERM 032

Session

複数の通信を、一つの利用状態としてつなぐ

Sessionは、独立したHTTPリクエストを同じ利用者や操作の流れとして関連付ける状態です。サーバー側の保存領域と、ブラウザが持つ推測困難な識別子を組み合わせる方式が一般的です。

01CREATE状態を作る
02ATTACHIDを送り返す
03RESOLVE状態を参照
OVERVIEW

複数の通信にまたがる利用者の状態を管理する仕組みの全体像。

CONTENTSこの記事の目次

QUICK OVERVIEW

30秒でつかむ

01IDENTIFIER

推測困難なID

意味のある情報を直接入れず、十分な乱数で発行します。

02STORE

状態の保存先

複数サーバーから共有できるDBやCacheへ保存します。

03EXPIRY

有効期限

無操作時間と最大継続時間を決め、不要な状態を破棄します。

01 — DEFINITION

Sessionとは
何か

Sessionは、独立したHTTPリクエストを同じ利用者や操作の流れとして関連付ける状態です。サーバー側の保存領域と、ブラウザが持つ推測困難な識別子を組み合わせる方式が一般的です。

02 — HOW IT WORKS

仕組みを
3段階で見る

細部へ入る前に、入力から結果までの役割を順番に捉えます。

INPUTPROCESSOUTPUT
01CREATE

状態を作る

ログイン成功時などにランダムなSession IDを発行する。

02ATTACH

IDを送り返す

ブラウザがCookieなどで各リクエストへIDを付ける。

03RESOLVE

状態を参照

サーバーがIDから利用者と有効期限を確認する。

PROCESS

Sessionを理解するときの、最小の処理単位です。

03 — ESSENTIALS

押さえるべき
3つの要点

名前だけでなく、この3点の関係まで理解すると実装へつなげやすくなります。

01IDENTIFIER

推測困難なID

意味のある情報を直接入れず、十分な乱数で発行します。

02STORE

状態の保存先

複数サーバーから共有できるDBやCacheへ保存します。

03EXPIRY

有効期限

無操作時間と最大継続時間を決め、不要な状態を破棄します。

04 — REAL WORLD EXAMPLE

ログイン後の画面を継続利用する

HTTPは各要求が独立しているため、利用者を毎回結び付ける必要があります。

SCENARIO / SESSIONSTEP BY STEP
  1. 01

    認証成功時にSessionを作る

  2. 02

    Session IDを安全なCookieへ保存する

  3. 03

    要求ごとにIDを照合し利用者を復元する

RESULTページを移動しても同じログイン状態と権限で操作できます。

05 — WATCH OUT

理解するときの
注意点

便利な仕組みほど、守備範囲と失敗の前提を明確にします。

01

ログイン時にIDを再発行する

事前に固定されたIDを引き継がず、Session Fixationを防ぎます。

02

ログアウト時にサーバー側も無効化する

Cookie削除だけでなく、対応するSessionを利用不能にします。

IN ONE SENTENCE

Sessionとは?

複数の通信にまたがる利用者の状態を管理する仕組み

KEEP EXPLORING

WEBCookie掲載中SECURITYAuthentication掲載中WEBCache掲載中