情報処理安全確保支援士 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

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

