クッキーとセッション
テーマパークの「再入場スタンプ」や「クロークの預かり札」のように、インターネットで「自分が誰なのか」を覚えておくための仕組みです。
定義 Webサイトが利用者を識別し、状態(ログインなど)を維持するために情報を分担して管理する仕組みです。クッキー(Cookie)は利用者の端末(ブラウザ)に直接保存される「小さなメモ」であり、セッション(Session)はサーバー側の金庫に情報を保管し、利用者には「整理券(番号札)」だけを渡す仕組みです。
手の甲のスタンプとVIP台帳:なぜ「記憶」が必要なのか?
Webの基本通信規格であるHTTPは、もともと「忘れっぽい」性質(ステートレス)を持っています。ログインボタンを押した直後でも、次のページに移動するとサーバーは「あれ、あなた誰でしたっけ?」とすっかり忘れてしまいます。ページを移動するたびにIDとパスワードを打ち直すのは大変ですよね。
そこで、Webサイトは自分が誰なのかを証明する道具を必要とします。ブラウザ側に小さなメモを残しておく技術がクッキー(Cookie)です。テーマパークの再入場スタンプのように、ページを開くたびにブラウザが「私、さっきログインした人ですよ」とメモを提示するのです。
しかし、大切なパスワードや個人情報をそのまま利用者のパソコンに書いておくと、盗み見られるリスクが高まります。そこで重要な情報はサーバー側の秘密の台帳でしっかり管理し、そのやり取りを行う仕組みをセッション(Session)と呼びます。
クッキーとセッション、どうやって役割を分担するの?
クッキーは利用者の端末(Webブラウザ)にファイルとして直接保存されます。「次回からこのポップアップを表示しない」という設定や、ショッピングサイトのカートに入れた商品リストのように、万が一漏れても実害が少ない便利機能に主に使われます。サーバーの保存容量を使わないため、サーバー側の負担を減らせるメリットがあります。
一方でセッションは、実際の情報(氏名、会員ランク、決済情報など)をサーバー内部のメモリやデータベースにのみ保管します。その代わり、利用者のブラウザには「あなたは77番のお客様です」と書かれたセッションID(Session ID)という整理券だけを渡します。
利用者が整理券を持ってアクセスすると、サーバーは台帳の「77番の引き出し」を開けてその人の状態を確認します。これなら重要な個人情報がインターネット上を行き交うことなくサーバー内に留まるため、はるかに安全です。
もう少し正確に言うと:二つは対立するライバルではありません
クッキーとセッションは、全く別物の競合技術だと思われがちです。しかし実は、セッションが正しく動くためにはクッキーの助けが不可欠です。サーバーが発行した「整理券(セッションID)」をブラウザに保管し、ページを移動するたびに見せる手段としてクッキーが使われているからです。
もしブラウザの設定でクッキーを完全に無効化するとどうなるでしょうか?サーバーがいくら整理券を発行してもブラウザ側で保存できないため、ページを移動した瞬間にログアウトされてしまいます。
なお最近では、スマホアプリや複数サーバーとの連携をスムーズにするためにトークン(Token)認証(JWTなど)といった仕組みも広く使われています。それでもWebブラウザが状態を記憶する基本の土台には、今もクッキーとセッションの協力関係が存在しています。
🤔 よくある誤解
クッキーはパソコンをハッキングしたり壊したりする悪質なウイルスの一種だ。
クッキーは単なるテキストファイル(文字データ)に過ぎないため、自分自身でプログラムを実行したりウイルスを感染させたりすることはできません。ただし、閲覧履歴や行動パターンの追跡(トラッキング)に使われることがあるため、プライバシー面での配慮が必要なだけです。
🧺 日常で出会う場面
クッキーは自分の端末に残す「メモ用紙」、セッションはサーバーが保管する「安全な台帳」です。二つが手を取り合って、Webサイトのログイン状態や買い物のカートを維持しています。