セッションとは「一連のやり取りのまとまり」
セッションとは、利用者がWebサイトに訪れてから、そのサイトを離れるまでの、一連の操作のまとまりのことを指す言葉です。ログインしてから、いくつかのページを見て、ログアウトするまでの一連の流れを、1つの「セッション」として管理します。
Cookieとの関係
以前の記事で紹介したCookieは、セッションを管理するために使われる代表的な手段の1つです。サイトにログインすると、サーバー側は利用者ごとに「セッションID」という、一時的な識別番号を発行します。このセッションIDをCookieに保存しておくことで、サーバー側は「このCookieを持っている人は、さっきログインしたあの人だ」と識別できるようになり、ページを移動してもログイン状態を保ち続けることができます。
「受付番号札」に例えると
セッションの仕組みは、病院や役所の受付でもらう「番号札」に例えるとわかりやすいです。受付(ログイン)を済ませると、番号札(セッションID)を渡されます。その後、院内のどこに移動しても、番号札を見せるだけで「受付済みの、あの人だ」とすぐにわかってもらえます。会計を済ませて建物を出れば(ログアウト・ブラウザを閉じるなど)、その番号札の役目は終わります。
セッションには「有効期限」がある
セッションは、Cookieと同様に永続的なものではなく、一定時間操作がない場合や、ブラウザを閉じた場合に自動的に終了するよう設定されていることが一般的です。銀行のサイトなどで、しばらく操作せずにいると自動的にログアウトされてしまうのは、このセッションの仕組みによるものです。セキュリティを守るための、重要な仕組みの1つといえます。
セッションIDが漏れると何が起きるか
もし、この「番号札」にあたるセッションIDを第三者に知られてしまうと、その第三者はログイン情報(パスワードなど)を知らなくても、あなたになりすましてサイトを操作できてしまう可能性があります。これは「セッションハイジャック」と呼ばれる不正アクセスの手口の1つです。信頼できないWi-Fiでの通信や、共有パソコンでのログアウト忘れなどが、こうしたリスクにつながることがあるため注意が必要です。
Cookieとの違いのまとめ
| 項目 | Cookie | セッション |
|---|---|---|
| 保存される場所 | 利用者の端末(ブラウザ)側 | 主にサーバー側 |
| 実体 | データそのもの | 「一連のやり取り」という概念 |
| 役割 | セッションを識別するための手段としてよく使われる | ログイン状態などの管理そのもの |
運営者自身、最初にこの言葉に触れた時はピンとこなかったのですが、身近な例に置き換えることで理解できるようになりました。同じように感じている方の助けになればと思います。
「さっきログインしたのに、また求められる」の正体
セッション関連では、「ログインしたのに、しばらくするとまたログインを求められる」というトラブルが分かりやすい例です。利用者からすると「パスワードは合っているのに、なんでまたログインするの」となります。実際には、ログイン状態を一時的に保持している「セッション」が切れている可能性があります。原因も一つではなく、セッションの有効期限が短い、Cookieが保存されていない、サーバー側の設定、複数サーバー間でセッション情報を共有できていない、などが考えられます。特に複数のサーバーを使っているシステムでは、サーバーAではログイン状態なのに、サーバーBに移ったらログアウトしたように見えるという問題も起こり得ます。「ログイン=ずっとログイン状態」ではなく、ログイン状態を一時的に維持する仕組みがあると理解すると、セッションの役割が見えてきます。
覚えておきたいこと
セッションは、Webサイトとのやり取りにおける「一連のまとまり」を指す概念で、Cookieはそれを実現するための代表的な手段の1つです。両者はセットで理解しておくと、仕組み全体が掴みやすくなります。共有端末を使う際は、セッションの終了(ログアウト)を忘れないようにしましょう。
関連記事:ログインしたのにまたログインを求められる原因と切り分け方
あわせて読みたい:JWT(JSON Web Token)とは