🙆‍♀️

【セキュリティ】Cookie HttpOnly属性について

に公開

はじめに

Webサイトやアプリケーションを利用する際、私たちはログイン状態を維持したり、設定を保存したりするためにCookieを利用しています。しかし、このCookieが悪意のある第三者に盗まれると、アカウントの乗っ取りや個人情報の漏洩につながる可能性があります。
そこで重要なのが、HttpOnly属性です。この属性は、Cookieのセキュリティを強化し、特に「クロスサイトスクリプティング(XSS)」と呼ばれる攻撃から保護する役割を果たします。
本記事では、CookieのHttpOnly属性について、初心者でも理解できるように解説していきます。

HttpOnly属性とは


https://itechinc.jp/2025/03/02/secure-cookie-management/ より

HTTPOnly属性は、サーバーがクッキーを発行する際に付与する属性のひとつで、クッキーがクライアントサイドのJavaScriptからアクセスされるのを防ぐ仕組みです。
通常、ブラウザではクッキーがHTTPリクエストとともに自動送信され、document.cookieなどのスクリプトからも読み取れるため、XSS(クロスサイトスクリプティング)攻撃などでセッション情報や認証データが狙われるリスクがありました。
そこで、HTTPOnly属性を設定すると、クッキーはサーバーとのHTTP通信時のみ利用され、クライアント側のスクリプトからは一切参照できなくなります。
https://itechinc.jp/2025/03/02/secure-cookie-management/ より引用

HttpOnly属性の役割

Cookieには、ユーザーのログイン情報(セッションID)やサイトの設定など、重要なデータが含まれることがあります。もし攻撃者が悪意のあるJavaScriptコードをWebページに仕込んだ場合、document.cookieという命令を使ってCookieを盗み取ることができてしまいます。

HttpOnly属性を設定すると、JavaScriptからCookieを読み取ることができなくなり、XSS攻撃による情報漏洩を防ぐことができます。

HttpOnlyの重要性

HttpOnlyがない場合

  1. 攻撃者が掲示板などに悪意のあるスクリプトを投稿。
  2. ユーザーがそのページを開くと、スクリプトが実行され、document.cookieでセッションIDが盗まれる。
  3. 攻撃者は盗んだセッションIDを使って、ユーザーのアカウントに不正アクセス。


https://itechinc.jp/2025/03/02/secure-cookie-management/ より再喝

HttpOnlyが有効な場合

  1. 攻撃者が同じ方法でCookieを盗もうとしても、JavaScriptではアクセスできないため、セッションIDが保護される。

このように、HttpOnly属性はCookieを守る役割を果たします。

HttpOnly属性の注意点

XSS攻撃を完全に防ぐわけではない
HttpOnlyは「Cookieを守る」ものであり、XSS脆弱性そのものを無くすものではありません。
そのため、入力値の検証やCSP(Content Security Policy) などの対策も併用する必要があります。

フロントエンドでCookieを操作できない
HttpOnlyを設定すると、JavaScriptでCookieを読み書きできなくなります。
例えば、フロントエンドで利用するCSRFトークンなどは、HttpOnlyを外す必要がある場合があります。

まとめ

HttpOnly属性を有効にすると、JavaScriptからCookieを読み取れなくなり、XSS攻撃による情報漏洩を防ぐことができ、第三者への情報漏洩のリスクを下げることができます。
さらに、Secure属性やSameSite属性と組み合わせることで、さらに安全性が高めることができます。
Webアプリケーション開発において、HttpOnly属性の設定は「最低限のセキュリティ対策」と言えるため、ログイン機能を持つサイトでは、必ず適用するようにしましょう。
次回はSameSite属性についてまとめていきます。
最後までお読みいただき、ありがとうございました。

参考・画像引用元URL

https://itechinc.jp/2025/03/02/secure-cookie-management/
https://developer.mozilla.org/ja/docs/Web/HTTP/Guides/Cookies
https://privacysandbox.google.com/cookies/basics/cookie-attributes?hl=ja
https://speakerdeck.com/murachiakira/sekiyuana-cookie-noshi-ifang

Discussion