🙌

【セキュリティ】Cookieのセキュリティ属性 ~secure~

に公開

はじめに

CookieはWebアプリケーションにおいて、ユーザーのセッション情報や設定を保持する重要な仕組みですが、適切に保護しないと第三者による盗聴や改ざんのリスクがあります。そこで重要なのが Secure属性です。この属性を設定すると、CookieがHTTPS接続時のみサーバーに送信されるようになり、通信経路上の盗聴や中間者攻撃から保護されます。
本記事では、このsecure属性についてまとめていきます。

Secure属性の役割と動作


https://itechinc.jp/2025/03/02/secure-cookie-management/ より画像引用

Secure属性が付与されたCookieは、ブラウザからサーバーへのリクエスト時に、暗号化されたHTTPS接続でのみ送信されます。
一方、平文のHTTP接続時には送信されません。これにより、例えば公共Wi-Fiのような安全でないネットワーク環境でも、Cookieが盗まれるリスクを軽減できます。

Secure属性が必要な理由

HTTP通信はデータが暗号化されていないため、Cookieの内容を第三者に読み取られる可能性があります。特に以下のような攻撃が懸念されます。

  • 盗聴(スニッフィング): ネットワークを流れるCookieを傍受される。
  • セッションハイジャック: セッションIDが盗まれ、他人のアカウントに不正アクセスされる。

Secure属性を適用すれば、HTTPSの暗号化によってこれらの脅威を防げます。

Secure属性の設定方法

サーバー側でCookieを発行する際、レスポンスヘッダーに以下のように指定します。

http
Set-Cookie: sessionId=abc123; Secure; SameSite=Lax

Secure属性の注意点

  • HTTPS環境が必須
    Secure属性はHTTPSでしか機能しないため、サーバーがSSL/TLS証明書を導入している必要があります。HTTPサイトでは無効です。

  • 開発環境での取り扱い
    ローカル開発環境(http://localhost)ではSecure属性が効かないため、テスト時には一時的に外す必要がある場合もあります。

  • 他の属性との組み合わせ
    HttpOnly(JavaScriptからのアクセス防止)
    SameSite(CSRF攻撃対策)
    と併用することで、より堅牢なセキュリティを実現できます。

まとめ

Secure属性は、Cookieを安全に扱うための基本的な防御策です。特にログインセッションや個人情報を含むCookieには必ず適用し、HTTPS環境と組み合わせて利用しましょう。ただし、Secure属性だけではすべての攻撃を防げないため、HttpOnlyやSameSiteなど他の対策と併用することが推奨されます。そん点については次回以降解説していきます。
最後までお読みいただき、ありがとうございました。

参考・画像引用元URL

https://www.cybermatrix.co/post/cookie-secure
https://blog.flatt.tech/entry/secure_cookie
https://itechinc.jp/2025/03/02/secure-cookie-management/

Discussion