cookieのsecure属性|情報処理安全確保支援士 平成30年 春期午前Ⅱ試験 問11

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

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

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

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

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

Secure属性を設定しておけば、暗号化されていないHTTP通信ではcookieが送信されないため、cookie情報の漏えいやセッションハイジャックのリスクを減らせます。

したがって、Secure属性の適切な動作は、「https://」で始まる暗号化通信の場合だけcookieを送信することです。

つまりSecure属性は、「大事なcookieをHTTPSのときだけ送るための設定」と考えると分かりやすいです。

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

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

まず押さえたいこと

cookieのSecure属性は、そのcookieをHTTPS通信のときだけ送信するための属性です。Secure属性を設定すると、URLのスキームがhttpsのページにアクセスしている場合だけ、Webブラウザからサーバへcookieが送出されます。ポイントは、HTTPでは送らず、HTTPSのときだけ送るという動作です。

迷ったときの判断軸

有効期間を制御するのはExpiresやMax-Age、JavaScriptからの読出しを禁止するのはHttpOnly、URLのパスに応じて送信範囲を制御するのはPath属性です。Secure属性は、cookieの寿命や読出し可否ではなく、送信される通信経路がHTTPSかどうかを判断する属性と整理しましょう。

科目Bにつなげるために

科目Bでは、ログインセッション・cookie・HTTPS・セッションIDの漏えい対策などと絡めて問われることがあります。Secure属性を設定していないと、HTTP通信時にcookieが送られ、盗聴によってセッションIDが漏えいするおそれがあります。cookieの安全設定では、Secure・HttpOnly・SameSiteをそれぞれ役割で切り分けましょう。