【応用情報 対策】Cookieの「Secure属性」とは?HttpOnlyとの違いと「通信の保護」を完全理解

PR

よかったら運営者のnoteも見てください!

Webサイトのセキュリティを語る上で、Cookieの扱いは避けて通れません。 以前の記事では、Cookieを「会員証」にたとえて解説しましたが、実はこの会員証には、安全を守るための「特別なシール(属性)」を貼ることができます。

それが「Secure(セキュア)属性」です。

Cookieについてはこちらの記事もご確認ください

Cookieの基本的な部分については、下記の記事で解説していますので、よろしければご参照ください。

今回は、このSecure属性がどのような役割を果たしているのか、なぜ現代のWebで必須なのかを解説し、応用情報技術者試験の過去問で理解度をチェックします。

目次

おさらい:Cookieとは「会員証」

簡単に復習しましょう。Cookieとは、Webサイト(サーバー)がブラウザに預ける「会員証(データ)」のことです。 これを持っているおかげで、私たちはログイン状態を維持したり、カートの中身を保存したりできます。

しかし、この会員証(特にセッションID)は、悪意ある第三者に盗まれると、本人になりすまされてしまう(セッションハイジャック)というリスクがあります。

そこで重要になるのが、会員証を「いつ、どこで出すか」というルール設定です。

Secure属性とは?「安全な場所でしか出さない」ルール

Secure属性とは、WebサーバーがブラウザにCookieを渡す際に、「このCookieは、暗号化された通信(HTTPS)の時だけサーバーに送ってね」と指示する設定のことです。

これを「会員証」と「配送」でたとえてみましょう。

たとえ話:透明な封筒 vs ジュラルミンケース

HTTP通信(暗号化なし): 中身が丸見えの「透明な封筒」で手紙を送るようなもの。配送業者(ネットワーク上のルータなど)に中身を覗き見られる可能性があります。

HTTPS通信(暗号化あり): 頑丈な鍵付きの「ジュラルミンケース」で送るようなもの。中身は見えません。

もし、あなたの「会員証」を透明な封筒(HTTP)に入れて送ってしまったらどうなるでしょう? 途中で盗み見られて、会員番号をコピーされてしまうかもしれません。

そこで、会員証に「Secure」というシールを貼っておきます。 ブラウザはこのシールを見ると、こう判断します。

「あ、これにはSecureシールが貼ってあるな。じゃあ、透明な封筒(HTTP)で送るのはやめておこう。ジュラルミンケース(HTTPS)が用意された時だけ、この会員証を入れよう」

これがSecure属性の役割です。これにより、平文(HTTP)での通信時にCookieが盗聴されるのを防ぎます。

現代におけるSecure属性の重要性

一昔前は、ログイン画面だけHTTPSで、トップページなどはHTTPというサイトも多くありました。しかし現代では、「常時SSL化(全てのページをHTTPSにする)」が標準です。

それに伴い、Secure属性には以下のような事情があります。

「SameSite=None」との関係

最近のブラウザの仕様(Chromeなど)では、サードパーティCookie(サイトをまたぐCookie)を利用するために SameSite=None という設定をする場合、同時に Secure 属性を付与することが必須になっています。「他所のサイトで使うなら、せめて通信は安全にしなさい」という強制ルールです。

付け忘れるとどうなる?

もしサイトがHTTPS化されているのに、CookieにSecure属性を付け忘れるとどうなるでしょうか?
ユーザーが誤って http://... でアクセスしてしまったり、攻撃者が意図的にHTTP通信へ誘導したりした場合に、Cookieが平文で送信され、盗聴されるリスクが残ります。
そのため、現代のWeb開発において「重要なCookieには必ずSecure属性を付ける」ことは絶対のルールとなっています。

過去問に挑戦!

それでは、実際の試験問題で理解度を確認しましょう。

令和7年度 応用情報技術者試験 春期 午前 問41

【問題】
cookieにSecure属性を設定しなかったときと比較し,設定したときのWebブラウザの動作として,適切なものはどれか。

cookieに設定された有効期間を過ぎると,Webブラウザがcookieを無効化であると判断する。
URL内のスキームがhttpsのときだけ,Webブラウザからcookieが送出される。
WebブラウザがアクセスするURL内のパスとcookieに設定されたパスのプレフィックスが一致するときだけ,Webブラウザからcookieが送出される。
WebブラウザではJavaScriptによるcookieの読出しが禁止される。

正解は「イ」:HTTPS通信限定にする「Secure属性」

正解は イ です。

これまで見てきたように、Secure属性とは、その名の通り「セキュアな通信(暗号化された通信)の時だけ、Cookieを使ってよし」とブラウザに指示する設定です。

Secure属性の有無による違い
  • 設定なし:http://(暗号化なし)でも https://(暗号化あり)でも、Cookieを送信してしまう。
    • → カフェのフリーWi-Fiなどで盗聴される危険がある。
  • Secure属性あり:https:// の通信の時だけCookieを送信する。
    • 通信経路での盗聴(盗み見)を防ぐことができます。

⚠️ 超重要!「HttpOnly属性」との違い(選択肢エ)

この問題で最も間違えやすいのが、選択肢エです。

WebブラウザではJavaScriptによるcookieの読出しが禁止される。

これは、HttpOnly属性の説明です。

HttpOnly属性とは、ブラウザ上のプログラム(JavaScriptなど)から、Cookieを読み取れないようにする設定のことです。
たとえば、フォームを狙ったクロスサイトスクリプティング(XSS)攻撃を受けた際に、攻撃者にセッションID(Cookie)を盗まれるのを防ぐための対策です。

「Secure」と「HttpOnly」は、役割が全く違います。

Secure属性とHttpOnly属性の役割の違い
  • Secure属性 = 「通信経路」を守る(HTTPS限定にする)
  • HttpOnly属性 = 「プログラムからのアクセス」を防ぐ(XSS対策)

試験ではこの2つを入れ替えて出題されるパターンが非常に多いので、明確に区別しておきましょう。

他の選択肢は何の属性?

残りの選択肢も、それぞれCookieの属性についての説明です。

ア:有効期限の設定(Expires / Max-Age属性)

cookieに設定された有効期間を過ぎると,Webブラウザがcookieを無効化であると判断する。

これは Expires 属性や Max-Age 属性の説明です。Cookieをいつまで保存するかを指定します。

ウ:送信範囲の限定(Path属性)

WebブラウザがアクセスするURL内のパスとcookieに設定されたパスのプレフィックスが一致するときだけ,Webブラウザからcookieが送出される。

これは Path 属性の説明です。Webサイト内の特定のディレクトリ(例: /shop/ 以下など)にアクセスした時だけCookieを送るように制限します。

まとめ:Cookie属性の「四天王」

試験に出るCookie属性は、この4つを覚えておけばバッチリです。

属性名役割・効果関連するキーワード
SecureHTTPS通信時のみ送信する盗聴防止、暗号化
HttpOnlyJavaScriptからのアクセスを禁止XSS対策、Cookieの保護
Expires / Max-Age有効期限を設定する期間、無効化
Path送信するディレクトリ範囲を限定パス、プレフィックス

特に SecureHttpOnly は、セキュリティ対策として「必ず設定すべき」と言われる重要な属性です。実務でも役立つ知識ですので、セットで覚えてしまいましょう!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次