情報処理安全確保支援士 2020年 秋期 午前2 問12
問題文
WebサーバがHTTP over TLS(HTTPS) 通信の応答でcookieにSecure属性を設定するときのWebサーバ及びWebブラウザの処理はどれか。
選択肢
ア:Webサーバでは、cookie発行時に“Secure=”に続いて時間を設定し、Webブラウザでは、指定された時間を参照し、指定された時間を過ぎている場合にそのcookieを削除する。
イ:Webサーバでは、cookie発行時に“Secure=”に続いてホスト名を設定し、Webブラウザでは、指定されたホスト名を参照し、指定されたホストにそのcookieを送信する。
ウ:Webサーバでは、cookie発行時に“Secure”を設定し、Webブラウザでは、それを参照し、HTTPS通信時にだけそのcookieを送信する。(正解)
エ:Webサーバでは、cookie発行時に“Secure”を設定し、Webブラウザでは、それを参照し、Webブラウザの終了時にcookieの他の属性によらず、そのcookieを削除する。
🔒 解説は解答すると表示されます
Secure属性【午前2解説】
正解の理由
WebサーバがSet-Cookieヘッダで付与するSecure属性は「そのCookieを送信するときは安全なチャネル(HTTPS/TLS)でのみ送る」という意味を持つフラグです。したがって、Webサーバ側はヘッダにSecureを付け、Webブラウザ側はそのフラグを参照して、暗号化されたHTTPS通信時にだけ当該Cookieを送信します。設問の選択肢のうちこの動作を正しく表しているのが ウ です。
補足すると、Secureは値を持たない単なるフラグであり、"Secure=" のように値を指定する属性ではありません。また、Cookieの有効期限はExpires/Max-Ageで制御され、セッション型(ブラウザ終了で削除)にするにはExpires/Max-Ageを指定しないことにより実現します。よって「Secureが時間やホスト名、ブラウザ終了での削除を制御する」といった説明は誤りです。
解法ステップ
- 問題文のキーワード「Secure属性」を確認する。
- Cookie属性の基本一覧(Domain, Path, Expires/Max-Age, Secure, HttpOnly, SameSite)を思い出す。
- 各選択肢を属性の意味に照らして照合する。
- 時刻を扱うのはExpires/Max-Age → アは誤り。
- ホスト名を扱うのはDomain → イは誤り。
- ブラウザ終了での削除はExpires/Max-Ageを指定しない(セッションCookie)で実現 → エは誤り。
- 「HTTPS時にのみ送信する」はSecureの定義そのものなので、これが正解(ウ)。
選択肢別の誤答解説
- ア: 誤り。時間(有効期限)を指定する属性はExpiresまたはMax-Ageです。Secure属性は時間を示すものではありません。
- イ: 誤り。特定のホスト名(どのドメインに送るか)を指定するのはDomain属性です。Secureは送信チャネルを制限するだけです。
- ウ: 正しい。Secureはフラグであり、ブラウザはこのフラグが付与されたCookieをHTTPS(HTTP over TLS)による安全な接続時にのみ送信します。Set-Cookieの例:
Set-Cookie: sessionid=abc123; Secure; HttpOnly; Path=/; SameSite=Lax
- エ: 誤り。ブラウザの終了時に削除される「セッションCookie」はExpires/Max-Ageを指定しないことで実現されますが、これはSecure属性とは無関係です。Secureがあるからといって自動的にブラウザ終了で削除されるわけではありません。
よくある誤解
- SecureはJavaScript(document.cookie)からの読み取りを防ぐと思い込む。
→ これはHttpOnlyによる制御であり、Secureは送信チャネルのみ制御します。両方を併用することが多いです。 - Secureに値を与えられる(例: Secure=...)/Secureが有効期限を持つと勘違いする。
→ Secureは値を持たないフラグです。期限はExpires/Max-Ageで指定します。 - Secureによりサーバ側や証明書の検証が行われると考える。
→ Secureはブラウザ側の送信条件を指定するだけで、証明書の検証そのものやサーバの動作を変えるものではありません。
補足コラム
- セット例と関係属性
- 永続Cookie(ブラウザ終了後も保持)を作るにはExpiresまたはMax-Ageを指定する。
- セキュリティを高める一般的な組み合わせはSecureとHttpOnlyとSameSiteの併用です。
- TLS終端(ロードバランサ等)を挟む構成でも、ブラウザ—ロードバランサ間がHTTPSであればブラウザはSecure Cookieを送信します。バックエンドまでの通信が平文でも、ブラウザはSecureの条件を満たしているかだけで送信を決めます。
- セキュリティ注意点:Secureは送信ルートを保護しますが、クッキー内容の機密性を完全に保証するものではありません(XSSで盗まれる、あるいは不適切にログ出力される等のリスクは別途対策が必要です)。
FAQ
Q: Secureを付ければXSSによるクッキー窃取を防げますか?
A: いいえ。Secureは送信をHTTPSに限定するだけです。JavaScriptからのアクセスを防ぐにはHttpOnlyを使います。XSS対策自体(入力検証やCSP等)も必要です。
A: いいえ。Secureは送信をHTTPSに限定するだけです。JavaScriptからのアクセスを防ぐにはHttpOnlyを使います。XSS対策自体(入力検証やCSP等)も必要です。
Q: サーバがSecureを付けたCookieを発行したが、ブラウザがHTTP接続でそのCookieを送っている。なぜ?
A: ブラウザがSecureを正しく解釈していれば送りません。送られているなら実際にはSecure属性が付いていない、あるいは通信がHTTPSと認識されている(プロキシやヘッダ操作でHTTPSに見えている)可能性があります。開発者ツールでSet-Cookieヘッダを確認してください。
A: ブラウザがSecureを正しく解釈していれば送りません。送られているなら実際にはSecure属性が付いていない、あるいは通信がHTTPSと認識されている(プロキシやヘッダ操作でHTTPSに見えている)可能性があります。開発者ツールでSet-Cookieヘッダを確認してください。
Q: ブラウザを閉じたらSecure Cookieは消えますか?
A: それはExpires/Max-Ageの有無によります。Expires/Max-Ageを指定しない(=セッションCookie)場合は通常ブラウザ終了で削除されますが、これはSecure属性とは無関係です。
A: それはExpires/Max-Ageの有無によります。Expires/Max-Ageを指定しない(=セッションCookie)場合は通常ブラウザ終了で削除されますが、これはSecure属性とは無関係です。
関連キーワード: Set-Cookie、Secure属性、HttpOnly、Expires、Max-Age、Domain、Path、SameSite、セッションCookie、TLS、HTTPS

\ せっかくなら /
情報処理安全確保支援士を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

