【応用情報 対策】Cookieの「Secure属性」とは?HttpOnlyとの違いと「通信の保護」を完全理解
Webサイトのセキュリティを語る上で、Cookieの扱いは避けて通れません。 以前の記事では、Cookieを「会員証」にたとえて解説しましたが、実はこの会員証には、安全を守るための「特別なシール(属性)」を貼ることができます。
それが「Secure(セキュア)属性」です。
Cookieの基本的な部分については、下記の記事で解説していますので、よろしければご参照ください。

今回は、このSecure属性がどのような役割を果たしているのか、なぜ現代のWebで必須なのかを解説し、応用情報技術者試験の過去問で理解度をチェックします。
おさらい:Cookieとは「会員証」
簡単に復習しましょう。Cookieとは、Webサイト(サーバー)がブラウザに預ける「会員証(データ)」のことです。 これを持っているおかげで、私たちはログイン状態を維持したり、カートの中身を保存したりできます。
しかし、この会員証(特にセッションID)は、悪意ある第三者に盗まれると、本人になりすまされてしまう(セッションハイジャック)というリスクがあります。
そこで重要になるのが、会員証を「いつ、どこで出すか」というルール設定です。
Secure属性とは?「安全な場所でしか出さない」ルール
Secure属性とは、WebサーバーがブラウザにCookieを渡す際に、「このCookieは、暗号化された通信(HTTPS)の時だけサーバーに送ってね」と指示する設定のことです。
これを「会員証」と「配送」でたとえてみましょう。
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を使ってよし」とブラウザに指示する設定です。
- 設定なし:
http://(暗号化なし)でもhttps://(暗号化あり)でも、Cookieを送信してしまう。- → カフェのフリーWi-Fiなどで盗聴される危険がある。
- Secure属性あり:
https://の通信の時だけCookieを送信する。- → 通信経路での盗聴(盗み見)を防ぐことができます。
⚠️ 超重要!「HttpOnly属性」との違い(選択肢エ)
この問題で最も間違えやすいのが、選択肢エです。
エ WebブラウザではJavaScriptによるcookieの読出しが禁止される。
これは、HttpOnly属性の説明です。
HttpOnly属性とは、ブラウザ上のプログラム(JavaScriptなど)から、Cookieを読み取れないようにする設定のことです。
たとえば、フォームを狙ったクロスサイトスクリプティング(XSS)攻撃を受けた際に、攻撃者にセッションID(Cookie)を盗まれるのを防ぐための対策です。
「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つを覚えておけばバッチリです。
| 属性名 | 役割・効果 | 関連するキーワード |
|---|---|---|
| Secure | HTTPS通信時のみ送信する | 盗聴防止、暗号化 |
| HttpOnly | JavaScriptからのアクセスを禁止 | XSS対策、Cookieの保護 |
| Expires / Max-Age | 有効期限を設定する | 期間、無効化 |
| Path | 送信するディレクトリ範囲を限定 | パス、プレフィックス |
特に Secure と HttpOnly は、セキュリティ対策として「必ず設定すべき」と言われる重要な属性です。実務でも役立つ知識ですので、セットで覚えてしまいましょう!

