Secure Steady
Cookie 属性と安全な管理 - Cookie セキュリティ の使い方・オプション・サンプル

Cookie 属性と安全な管理 - Cookie セキュリティ

Cookie の属性(HttpOnly, Secure, SameSite)を正しく設定し、セッションハイジャックや CSRF を防ぐ。

概念図

Cookie セキュリティ diagram

実例

最も厳格な Cookie 設定例

bash
Set-Cookie: sid=xyz; HttpOnly; Secure; SameSite=Strict; Path=/; Max-Age=3600

クロスサイトで送信が必要な場合(SameSite=None には Secure が必須)

bash
Set-Cookie: token=abc; Secure; SameSite=None; Path=/

主要な Cookie 属性

  • HttpOnly: JavaScript からの document.cookie によるアクセスを禁止する。XSS による Cookie 窃取を防ぐ最も重要な属性

  • Secure: HTTPS 通信時のみ Cookie を送信する。HTTP での盗聴を防止

  • SameSite: クロスサイトリクエスト時の Cookie 送信を制御する

    • Strict: クロスサイトでは一切送信しない(最も安全だがユーザビリティに影響)
    • Lax: GET リクエストのみ許可(デフォルト。多くのケースで推奨)
    • None: 常に送信(Secure 属性が必須。サードパーティ Cookie 用)
  • Path: Cookie を送信するパスを限定する

  • Domain: Cookie を送信するドメインを指定する。省略するとサブドメインには送信されない

  • Max-Age / Expires: Cookie の有効期限を設定する。セッション Cookie は省略時にブラウザを閉じると削除される

よくある設定ミス

  • セッション ID を格納する Cookie に HttpOnly が未設定 → XSS で窃取可能
  • Secure 未設定で HTTP 通信時に Cookie が平文送信される
  • SameSite 未設定で古いブラウザが None として扱い CSRF に脆弱になる
  • Domain を広く設定しすぎて、サブドメインの脆弱なアプリから Cookie を読み取られる
  • Max-Age が長すぎてセッション固定攻撃のリスクが高まる

関連トピック