セッション管理 【session management】
概要
セッション管理(session management)とは、クライアントとサーバが通信する際、同じ相手との一連のやり取りをセッションと呼ばれる単位で識別・管理すること。サーバ側で相手の属性や状態を管理し、応答に反映させることができる。あるシステムに利用者や別のシステムがアクセスし、連続して交わされる一連の通信や操作の連なりを「セッション」(session)という。アクセス時に認証やアクセス元情報の取得などによって相手を識別し、以後、切断やタイムアウトまでの間に行われるデータ送受信を同じセッションとして取り扱うことをセッション管理という。
HTTPにおけるセッション管理
通信システムやプロトコル(通信規約)によっては仕様の中にセッション管理の仕組みが盛り込まれており、接続の開始、通信相手の識別、セッションの終了について規定の手続きやルールなどが決まっている。
Web通信に用いられるHTTP(Hypertext Transfer Protocol)は状態管理を行わないステートレス型のプロトコルであるため、それ自体の仕様としてはセッション管理に対応していない。Webアプリケーションなどでセッション管理が必要な場合は何らかの方法で通信相手を識別する必要がある。
よく用いられる手法としては、Cookieに一意の識別子(セッションIDやユーザーID)を記録する手法、URLパラメータやパスの一部に識別子を埋め込む手法、フォームの一部に隠しフィールドなどとして識別子を埋め込む手法がある。
HTTP通信におけるセッション管理に保安上の欠陥(脆弱性)があり、外部の攻撃者によって攻撃の標的とされる場合がある。セッション管理を標的とする攻撃手法としてはセッションフィクセーションやセッションハイジャックなどがよく知られている。
(2023.10.14更新)