CookieのSecure属性|情報処理安全確保支援士試験 令和元年 秋期午前Ⅱ試験 問11
出典:令和元年秋期 午前Ⅱ 問11
分野:セキュリティ / セキュリティ実装技術
CookieにSecure属性を設定しなかったときと比較した,設定したときの動作として,適切なものはどれか。
- ア:Cookieに設定された有効期間を過ぎると,Cookieが無効化される。
- イ:JavaScriptによるCookieの読出しが禁止される。
- ウ:URL内のスキームがhttpsのときだけ,WebブラウザからCookieが送出される。
- エ:WebブラウザがアクセスするURL内のパスとCookieに設定されたパスのプレフィックスが一致するときだけ,WebブラウザからCookieが送出される。
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などの属性について、それぞれ何を防ぐための設定かを分けて整理しておきましょう。
Secure属性は、cookieをHTTPS通信のときだけ送信させるための設定です。
Secure属性が付いたcookieは、アクセス先のURLが「https://」で始まる場合だけ、Webブラウザからサーバへ送信されます。一方、「http://」で始まる暗号化されていない通信では送信されません。
cookieには、ログイン状態を管理するセッションIDなど、重要な情報が含まれることがあります。HTTP通信でcookieを送ってしまうと、通信を盗聴され、セッションIDを悪用されるおそれがあります。
Secure属性を付けることで、平文のHTTP通信でcookieが送信されなくなり、cookie情報の漏えいやセッションハイジャックのリスクを減らせます。
つまりSecure属性は、「大事なcookieを暗号化されたHTTPS通信のときだけ送るための設定」と考えると分かりやすいです。
したがって、ウが適切です。
❌他選択肢が誤りの理由ア:Cookieに設定された有効期間を過ぎると,Cookieが無効化される。
⇒Cookieの有効期間に関する説明です。有効期間は
Expires属性やMax-Age属性で制御します。Secure属性は、Cookieの有効期限ではなく、HTTPS通信時だけ送信するかどうかを制御する属性です。イ:JavaScriptによるCookieの読出しが禁止される。
⇒JavaScriptからのCookie読出しを禁止するのは、主に
HttpOnly属性です。Secure属性は、JavaScriptからの読出し可否ではなく、HTTP通信でCookieを送信しないようにするための属性です。エ:WebブラウザがアクセスするURL内のパスとCookieに設定されたパスのプレフィックスが一致するときだけ,WebブラウザからCookieが送出される。
⇒Cookieの
Path属性に関する説明です。Path属性はCookieを送信するURLパスの範囲を指定するものであり、Secure属性の動作ではありません。