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 で保護 | ❌ 脆弱 | ❌ 脆弱 |
| 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
サーバーレス
サーバーの管理をクラウドプロバイダーに委ね、コードの実行に対してのみ課金されるコンピューティングモデル
HTTPS / TLS
HTTP 通信を TLS で暗号化し、盗聴・改ざん・なりすましを防ぐプロトコル
CORS
ブラウザの同一オリジンポリシーを緩和し、異なるオリジン間のリソース共有を許可する仕組み
関連する記事
技術書の読む順番戦略 - 複数冊を組み合わせて理解を加速させる
技術書を 1 冊ずつ読むのではなく、複数冊を戦略的に組み合わせることで理解の深さと速度を飛躍的に高める方法を解説します。
技術書を Kindle で読むコツ - 電子書籍ならではの活用術
技術書を Kindle で効率的に読むための具体的なテクニックを紹介します。ハイライト、検索、フォントサイズの調整など、紙にはない電子書籍の強みを活かす方法。
技術書のタイトルに隠された法則 - 「入門」「実践」「詳解」の意味を読み解く
技術書のタイトルに使われる「入門」「実践」「詳解」などのキーワードには暗黙のルールがあります。タイトルだけで本のレベルと内容を見抜くコツを紹介します。