クッキー(HTTP Cookie)の基礎から実務まで:仕組み・属性・セキュリティとプライバシー対策を徹底解説
クッキーとは
クッキー(Cookie)は、ウェブサイトがユーザーのブラウザに保存する小さなテキスト情報のことです。技術的にはHTTPレスポンスのヘッダ(Set-Cookie)でブラウザに指示され、ブラウザは以降の同一サイトへのリクエスト時にそのクッキーを送信(Cookieヘッダ)します。これにより、サーバー側は前回の状態を識別したり、ユーザーの設定を記憶したりできます。
クッキーの仕組み(基本)
- 発行:サーバーがHTTPレスポンスで「Set-Cookie: name=value; 属性」を送るか、JavaScriptがdocument.cookieを使って発行します。
- 送信:ブラウザは保存されたクッキーを、該当するドメインとパスの範囲のリクエストに自動で付与します(Cookieヘッダ)。
- 属性:Expires/Max-Age、Domain、Path、Secure、HttpOnly、SameSiteなどの属性で有効期限や適用範囲、セキュリティ挙動を制御します。
主な属性と意味
- Expires / Max-Age:保存期間(期限)を指定。指定がなければ「セッション終了時に削除」されます。
- Domain:クッキーを送信する対象ドメイン(サブドメインを含めるか等)を指定。
- Path:同一ドメイン内でも特定のパスに限定するための指定。
- Secure:HTTPS接続でのみ送信されるようにするフラグ。平文HTTPでは送られません。
- HttpOnly:JavaScript(document.cookie)からアクセスできないようにするフラグ。XSSからの窃取リスクを低減します。
- SameSite:クロスサイトリクエスト時にクッキーを送るかどうかを制御(Strict / Lax / None)。近年デフォルト挙動の変更(既定でLax等)が導入されています。
クッキーの種類
- セッションクッキー(session cookie):ブラウザのセッション中のみ有効。ブラウザを閉じると消えることが多い。
- 永続クッキー(persistent cookie):ExpiresやMax-Ageが設定され、一定期間ブラウザに残る。
- ファーストパーティクッキー:ユーザーが直接アクセスしているドメインによって設定されるクッキー。
- サードパーティクッキー:アクセス中のページとは別のドメイン(広告配信や解析サービス等)が発行・利用するクッキー。トラッキングに使われることが多く、プライバシー議論の中心になっています。
用途(実際に何に使われるか)
- 認証とセッション管理(ログイン状態の維持)
- ユーザー設定の保存(言語、表示設定など)
- ショッピングカートの保持
- アクセス解析・行動トラッキング(Google Analytics等)
- A/Bテストやパーソナライズ(表示コンテンツの最適化)
JavaScriptからの操作と制約
フロントエンドではdocument.cookieを利用してクッキーの読み書きができますが、HttpOnlyが付与されたクッキーはJavaScriptから参照・変更できません。また、サイズや保存数の制限(ブラウザ依存)があり、1クッキーあたり約4KB程度が目安、ドメインごとのクッキー数やブラウザ全体の保存件数にも制限があります。これらはブラウザ毎に異なるため大量データ保存には向きません。
セキュリティ上の注意点
- XSS(クロスサイトスクリプティング)対策:重要な認証クッキーにはHttpOnlyを付け、スクリプトからの窃取を防ぐ。
- 中間者攻撃(MITM)対策:Secure属性を付け、HTTPSのみで送信する。さらにTLS設定やHSTSを併用する。
- CSRF対策:SameSite属性(LaxやStrict)の活用や、CSRFトークンの導入を行う。完全な対策には複数の対策を組み合わせる。
- 最小権限の原則:クッキーの有効範囲や有効期限は必要最小限にする。
プライバシーと法規制
クッキーは個人識別や行動追跡に利用されるため、各国・地域で規制の対象となっています。EUではePrivacy指令やGDPRの影響により、特にトラッキング目的のクッキーについてはユーザーの適切な同意(インフォームドコンセント)が必要とされています。多くの国で「同意バナー」や「コンセント管理プラットフォーム(CMP)」が導入されています。法的要件は地域や用途によって異なるため、実装時は法務やプライバシー担当と相談のうえ対応する必要があります。
近年の動向
- ブラウザ側のプライバシー強化:SameSiteのデフォルト挙動の変更(Chrome 80以降での取り扱いの変更など)や、サードパーティクッキー制限の強化が進んでいます。
- サードパーティクッキーの将来的削減:GoogleはChromeでのサードパーティクッキー利用を制限し、Privacy Sandboxなどの代替技術を提案しています。スケジュールは変動していますが、ウェブ広告・解析のエコシステムは変化しています。
- 代替技術の台頭:ローカルストレージ、サーバーサイドセッション、協調的なプライバシー保護API(Privacy Sandboxやコンテキスト広告など)の検討が増えています。また、指紋認証(fingerprinting)などの技術はクッキーの代替として問題視されることがあります(プライバシー懸念)。
実装と運用のベストプラクティス
- 重要な認証クッキーにはHttpOnlyとSecureを必ず付与する。
- SameSite属性を適切に設定し、第三者経由での不正送信を抑える(必要に応じてStrict/Lax/Noneを選択)。
- 保存期間は必要最小限にする(長期保存は避ける)。
- トラッキング目的のクッキーは、法律に従いユーザーの明示的同意を得る仕組みを実装する。
- クッキーに機密情報(パスワード等の生データ)を直接保存しない。サーバー側のセッションIDのみ保存するなどの設計を行う。
- クッキー数やサイズの上限に注意し、用途に応じてサーバーサイドや他のストレージを検討する。
よくある誤解
- 「クッキーはプログラム(ウイルス)のように勝手に実行される」:誤り。クッキーは単なるテキストデータで、ブラウザ内でコードとして実行されるものではありません。ただし、JavaScriptで読み取られると悪用される可能性があります。
- 「クッキーをオフにすれば完全に匿名になる」:部分的に効果はありますが、ブラウザ指紋化やIPアドレスなど他の手段で追跡される場合があります。
- 「サードパーティクッキー=必ず悪」:用途次第です。広告や解析で多用されるためプライバシー懸念が強い一方、有用なユースケースもあります。ただし、透明性と同意が重要です。
まとめ
クッキーはウェブアプリケーションにおける状態管理の基本的な仕組みであり、認証やユーザー体験の向上に不可欠です。しかし、セキュリティ(XSS/CSRF)やプライバシー(トラッキング)という観点から慎重に設計・運用する必要があります。近年はブラウザや規制によりサードパーティクッキーの扱いが変わりつつあり、代替手法の採用やプライバシーファーストの設計が求められています。
参考文献
- MDN Web Docs — HTTP cookies(日本語)
- MDN Web Docs — Set-Cookie(ヘッダー解説)
- RFC 6265 — HTTP State Management Mechanism(IETF)
- web.dev — SameSite cookies explained(Google / web.dev)
- Chromium Blog — SameSite updates(ChromeのSameSiteポリシーに関する公式情報)
- ICO — Cookies and similar technologies(英国情報コミッション事務所のガイダンス)
- GDPR.eu — Cookies and GDPR(GDPRとクッキーに関する解説)
- Chrome Developers — Privacy Sandbox(Chromeの代替案や試験的APIの情報)


