Cookie
Web サーバーがブラウザに保存を指示し、リクエスト間で状態を維持する仕組み
Cookie とは
Cookie は、Web サーバーがブラウザに保存を指示し、以降のリクエストでブラウザが自動送信する小さなデータ片 (最大 4KB) である。HTTP はステートレスなため、Cookie でセッションを維持する。
Cookie の属性
Cookie の属性を以下にまとめる。
| 属性 | 説明 |
|---|---|
HttpOnly | JS からアクセス不可 (XSS 対策) |
Secure | HTTPS でのみ送信 |
SameSite | クロスサイトでの送信を制御 |
Max-Age | 有効期限 (秒) |
Path | Cookie が送信されるパス |
Domain | Cookie が送信されるドメイン |
Cookie の設定
Cookie の設定を図で示す。
Set-Cookie: session=abc123; HttpOnly; Secure; SameSite=Strict; Max-Age=86400; Path=/
Cookie vs localStorage vs JWT
Cookie と localStorage vs JWT の違いを以下にまとめる。
| 観点 | Cookie | localStorage | JWT (Bearer) |
|---|---|---|---|
| 送信 | 自動 | 手動 (JS) | 手動 (JS) |
| XSS 耐性 | HttpOnly を付ければ JS から読めない | JS から読めるため持ち出される | 保存先が JS から読めるため持ち出される |
| CSRF 耐性 | 自動送信されるため SameSite の指定が必要 | 自動送信されないので影響を受けない | 自動送信されないので影響を受けない |
| サイズ | 4KB | 5MB | 保存先の上限に従う。ヘッダーへ載せるため、サーバー側のヘッダー上限にも収める |
| サーバーレス | ドメインをまたぐと設定が増える | 単体では認証に使えない | 検証に状態を持たずに済み相性が良い |
SameSite の値
SameSite の値を以下にまとめる。
| 値 | クロスサイト送信 | 用途 |
|---|---|---|
| Strict | 送信しない | 銀行、管理画面 |
| Lax | GET のみ | 一般的な Web アプリ (デフォルト) |
| None | 送信する。Secure の指定が必須 | クロスサイト API |
サーバーレスでの推奨
サーバーレス API では Cookie よりも JWT (Bearer トークン) が推奨。Cookie はステートフルなセッション管理が必要だが、JWT はステートレスで Lambda と相性が良い。
Cookie の関連書籍も参考になる。
この記事は役に立ちましたか?
関連用語
CSRF
ユーザーが認証済みの Web サイトに対して、攻撃者が意図しないリクエストを送信させる攻撃手法
JWT
JSON Web Token の略で、署名付きの JSON でユーザー情報を安全に伝達するトークン形式
localStorage
ブラウザにキーバリュー形式でデータを永続的に保存する Web Storage API
CORS
ブラウザの同一オリジンポリシーを緩和し、異なるオリジン間のリソース共有を許可する仕組み
Fetch API
HTTP リクエストを送信するためのモダンな Web API で、XMLHttpRequest の後継
TCP/IP
インターネット通信の基盤となるプロトコル群で、データの分割・送信・再組立を信頼性高く行う
関連する記事
インフラ / クラウド本ガイド - AWS や Docker を本で学ぶ
クラウドインフラ、コンテナ、IaC を学べる技術書の選び方と学習順序を紹介。インフラ本の賞味期限問題と公式ドキュメントとの使い分けも解説します。
技術書の読む順番戦略 - 複数冊を組み合わせて理解を加速させる
技術書を 1 冊ずつ読むのではなく、複数冊を戦略的に組み合わせることで、1 冊では届かない理解の深さと広さに達する方法を解説します。
Web 開発本ガイド - フロントエンドからバックエンドまで
Web 開発の全体像を学べる技術書の選び方と学習マップを紹介。フレームワーク本の賞味期限問題と公式ドキュメントとの使い分けも解説します。