Cookie の仕組み - Web に「記憶」を与える技術
HTTP は本来ステートレスなプロトコルです。サーバーはリクエストを受け取るたびに、それが誰からの何回目のアクセスなのかを知る手段がありません。1994 年、Netscape 社のエンジニア Lou Montulli がこの問題を解決するために考案したのが Cookie です。
Cookie はサーバーが Set-Cookie ヘッダーでブラウザに送信する小さなテキストデータで、ブラウザは以降のリクエストに Cookie ヘッダーとしてそのデータを自動的に付与します。これにより、ログイン状態の維持、ショッピングカートの保持、言語設定の記憶といった「状態の保持」が可能になりました。
Cookie は便利な技術である一方、トラッキングの手段としても広く利用されており、プライバシーの観点から世界的な規制の対象になっています。
ファーストパーティ Cookie とサードパーティ Cookie
Cookie は発行元のドメインによって 2 種類に分類されます。この区別がプライバシー問題の核心です。
| 種類 | 発行元 | 主な用途 | プライバシーリスク |
|---|---|---|---|
| ファーストパーティ | 訪問中のサイト自身 | ログイン維持、カート保持、設定記憶 | 低い (そのサイト内でのみ有効) |
| サードパーティ | 訪問中のサイトとは別のドメイン | 広告トラッキング、アナリティクス、SNS ウィジェット | 高い (複数サイトにまたがる行動追跡) |
たとえば shop.example.com を訪問したとき、そのサイトが設定する Cookie はファーストパーティです。一方、ページに埋め込まれた広告ネットワーク ads.tracker.com が設定する Cookie はサードパーティです。広告ネットワークは数百万のサイトにスクリプトを配信しているため、ユーザーがどのサイトをどの順番で訪問したかを横断的に把握できます。
Safari は 2017 年の ITP (Intelligent Tracking Prevention) 以降、サードパーティ Cookie をデフォルトでブロックしています。Firefox も ETP (Enhanced Tracking Protection) で同様の対策を実施しています。Chrome は長らくサードパーティ Cookie の廃止を予告していましたが、2024 年に方針を転換し、ユーザーの選択に委ねるアプローチに変更しました。
セッション Cookie と永続 Cookie
Cookie は有効期限によっても分類されます。
セッション Cookie
Expires や Max-Age 属性が設定されていない Cookie です。ブラウザを閉じると自動的に削除されます。ログインセッションの管理や、一時的なフォームデータの保持に使われます。セキュリティの観点では、永続 Cookie よりも安全です。ブラウザを閉じれば Cookie が消えるため、共有パソコンでのリスクが軽減されます。
永続 Cookie
Expires (有効期限の日時) または Max-Age (有効期間の秒数) が設定された Cookie です。ブラウザを閉じても、指定された期限まで保持されます。「ログイン状態を保持する」チェックボックスの裏側では、セッション Cookie の代わりに長期間有効な永続 Cookie が発行されています。
永続 Cookie の有効期限は、Chrome では最大 400 日に制限されています (2023 年以降)。それ以前は数年先の日付を設定することも可能でしたが、長期間のトラッキングを抑制するために上限が設けられました。
SameSite 属性 - CSRF 対策の要
SameSite 属性は、Cookie がクロスサイトリクエストに付与されるかどうかを制御する仕組みです。CSRF (Cross-Site Request Forgery) 攻撃への対策として 2016 年に導入され、現在はすべての主要ブラウザがサポートしています。
| 値 | 動作 | 用途 |
|---|---|---|
Strict |
同一サイトからのリクエストにのみ Cookie を送信 | 銀行サイトなど高セキュリティが求められる場面 |
Lax |
トップレベルナビゲーション (リンククリック) では送信。POST や iframe では送信しない | 一般的な Web サイト (Chrome のデフォルト) |
None |
すべてのクロスサイトリクエストで Cookie を送信 | サードパーティ Cookie (Secure 属性が必須) |
2020 年以降、Chrome は SameSite 属性が未指定の Cookie を Lax として扱うようになりました。これにより、明示的に SameSite=None; Secure を設定しない限り、Cookie はクロスサイトリクエストに付与されません。この変更は多くの Web アプリケーションに影響を与え、特に iframe を使った決済フォームや SSO (シングルサインオン) の実装で対応が必要になりました。
Cookie のセキュリティ属性を含む Web 技術の基礎を学ぶには、Web 技術の入門書が参考になります。
GDPR と Cookie 同意 - なぜ同意バナーが表示されるのか
EU の GDPR (一般データ保護規則、2018 年施行) と ePrivacy 指令により、EU 域内のユーザーに対して Cookie を使用する場合は、事前に明確な同意を得ることが義務付けられています。これが、Web サイトを訪問するたびに表示される Cookie 同意バナーの正体です。
GDPR が求める同意の要件は厳格です。
- 事前同意 (オプトイン): 必須でない Cookie は、ユーザーが同意するまで設定してはならない
- 明確な選択肢: 「すべて受け入れる」と同じ目立ち方で「すべて拒否する」ボタンを提示する必要がある
- 粒度のある選択: Cookie の種類 (分析、広告、機能) ごとに個別に同意・拒否できなければならない
- 撤回の容易さ: 同意はいつでも簡単に撤回できなければならない
- 記録の保持: 誰がいつ何に同意したかの記録を保持する義務がある
違反した場合の制裁金は最大で全世界年間売上高の 4% または 2,000 万ユーロのいずれか高い方です。2022 年にはフランスのデータ保護機関 CNIL が、Cookie 同意の不備を理由に Google に 1 億 5,000 万ユーロ、Facebook に 6,000 万ユーロの制裁金を科しました。
Cookie 同意バナーが表示される理由では、各国の規制の違いをさらに詳しく解説しています。広告トラッキングからの保護も併せて確認してください。
Cookie を削除するとどうなるか
ブラウザの設定から Cookie を削除すると、以下の影響があります。
- ログイン状態がリセットされる: すべての Web サイトからログアウトされ、再度ログインが必要になる
- カートの中身が消える: EC サイトのショッピングカートに入れた商品が失われる
- サイトの設定がリセットされる: ダークモード、言語設定、表示件数などのカスタマイズが初期状態に戻る
- Cookie 同意の記録が消える: 再度 Cookie 同意バナーが表示される
- トラッキングが一時的にリセットされる: 広告ネットワークのプロファイルが切断される (ただし、ブラウザフィンガープリントで再紐付けされる可能性がある)
Cookie を全削除するのではなく、サードパーティ Cookie だけをブロックし、ファーストパーティ Cookie は残す設定が、利便性とプライバシーのバランスとして現実的です。Firefox の「強化型トラッキング防止機能」や Safari の ITP は、まさにこのアプローチを採用しています。
IP 確認さんでは、ブラウザの Cookie 設定状況を含むセキュリティスコアを確認できます。定期的にチェックして、不要な Cookie が蓄積していないか確認しましょう。