cookieのSecure属性|情報処理安全確保支援士試験 令和3年秋期午前Ⅱ 問10

出典:令和3年秋期 午前Ⅱ 問10 分野:セキュリティ / セキュリティ実装技術
cookieにSecure属性を設定しなかったときと比較した,設定したときの動作として,適切なものはどれか。
  • ア:cookieに設定された有効期間を過ぎると,cookieが無効化される。
  • イ:JavaScriptによるcookieの読出しが禁止される。
  • ウ:URL内のスキームがhttpsのときだけ,Webブラウザからcookieが送出される。
  • エ:WebブラウザがアクセスするURL内のパスとcookieに設定されたパスのプレフィックスが一致するときだけ,WebブラウザからCookieが送出される。
解説

Secure属性は、cookieをHTTPS通信のときだけ送信させるための属性です。

Secure属性が付いたcookieは、アクセス先のURLがhttps://で始まる場合だけ、Webブラウザからサーバへ送信されます。反対に、http://で始まる暗号化されていない通信では送信されません。

cookieには、ログイン状態を管理するセッションIDなど、重要な情報が入ることがあります。HTTP通信でcookieを送ってしまうと、通信内容を盗聴され、セッションIDを悪用されるおそれがあります。

Secure属性を付けることで、cookieが平文のHTTP通信で送信されなくなり、cookie情報の漏えいやセッションハイジャックのリスクを減らせます。

属性 役割
Secure HTTPS通信の場合だけcookieを送信する
Domain cookieを送信するドメインを指定する
Path cookieを送信するURLの範囲を指定する
Expires cookieの有効期限を指定する
HttpOnly JavaScriptからcookieを読み取れないようにする
SameSite 別サイトからのリクエスト時にcookieを送るか制御する

つまりSecure属性は、「大事なcookieを暗号化されたHTTPS通信のときだけ送るようにする設定」と考えると分かりやすいです。

したがって、が適切です。

❌他選択肢が誤りの理由
ア:cookieに設定された有効期間を過ぎると,cookieが無効化される。
⇒Cookieの有効期限に関する説明です。Expires属性やMax-Age属性によってCookieの有効期間を設定します。Secure属性は、有効期限ではなく、CookieをHTTPS通信時だけ送信するための属性です。
イ:JavaScriptによるcookieの読出しが禁止される。
HttpOnly属性の説明です。HttpOnly属性を設定すると、JavaScriptからCookieを読み出しにくくなり、クロスサイトスクリプティングによるCookie窃取のリスクを下げられます。Secure属性の動作ではありません。
エ:WebブラウザがアクセスするURL内のパスとcookieに設定されたパスのプレフィックスが一致するときだけ,WebブラウザからCookieが送出される。
⇒CookieのPath属性に関する説明です。Cookieを送信するURLのパス範囲を指定するものであり、HTTPS通信時だけ送信するSecure属性とは役割が異なります。
TSUNAGARU-ADVICE

まず押さえたいこと

cookieにSecure属性を設定すると、WebブラウザはそのcookieをHTTPS通信のときだけ送出します。つまり、URLのスキームがhttpsの場合に限ってcookieを送る動作になります。

迷ったときの判断軸

有効期間を制御するのはExpires属性やMax-Age属性、JavaScriptからの読出しを防ぐのはHttpOnly属性、URLのパスに応じてcookie送出範囲を制御するのはPath属性です。Secure属性は、HTTPでは送らず、HTTPSでだけ送るための属性と判断しましょう。

科目Bにつなげるために

科目Bでは、セッションIDを格納したcookieが盗聴やXSSで漏えいするリスクをどう下げるかが問われることがあります。Secure・HttpOnly・SameSite・Pathなどの属性について、それぞれ何を防ぐための設定かを分けて整理しておきましょう。