目次
問題文
CookieにSecure属性を設定しなかったときと比較した,設定したときの動作として,適切なものはどれか。
ア Cookieに指定された有効期間を過ぎると,Cookieが無効化される。
イ JavaScriptによるCookieの読出しが禁止される。
ウ URL内のスキームがhttpsのときだけ,WebブラウザからCookieが送出される。
エ WebブラウザがアクセスするURL内のパスとCookieによって指定されたパスのプレフィックスが一致するとき,WebブラウザからCookieが送出される。
解説
解答
ウ
ア:有効期間を過ぎると無効化される
これは Cookieの有効期限(Expires/Max-Age属性) の説明です。
Secure属性とは関係ありません。
有効期限を過ぎれば自動的に無効になりますが、これはSecureを付けなくても同じです。
イ:JavaScriptによるCookieの読出しが禁止される
これは HttpOnly属性 の説明です。
HttpOnlyを付けることで、JavaScript(例えば document.cookie)からの読み出しを禁止し、クロスサイトスクリプティング(XSS)攻撃によるCookie窃取を防止できます。
Secure属性は送信経路に関する制御なので、ここでの説明は誤りです。
ウ:URL内のスキームがhttpsのときだけ送出される
これが正解です。
Secure属性を設定したCookieは、暗号化通信(HTTPS)でアクセスするときのみブラウザから送信されるようになります。
これにより、平文のHTTP通信でCookieが漏洩するリスクを防止できます。
特にセッションIDをCookieに保存する場合、Secure属性は必須のセキュリティ設定です。
エ:URLのパスとCookie指定のパスが一致するとき送出される
これは Path属性 の説明です。
Cookieにはドメインやパスの適用範囲を制御する属性があり、設定したパスのプレフィックスと一致する場合にのみ送信されます。
Secure属性ではなく、Path属性による挙動です。
Cookieに関する主要なセキュリティ属性
属性名 | 内容 | 主な目的 | 具体例 |
---|---|---|---|
Secure | HTTPS通信のときのみCookieを送信 | 平文HTTPでのCookie漏洩を防止 | セッションIDが盗聴されるのを防ぐ |
HttpOnly | JavaScriptからdocument.cookieで読み取れない | XSS攻撃によるCookie窃取を防止 | 攻撃スクリプトからの不正取得を防ぐ |
SameSite | クロスサイトリクエストでのCookie送信を制御(Strict / Lax / None) | CSRF攻撃の防止 | フォーム送信や外部サイト経由の不正リクエスト対策 |
Path | Cookieを送信するURLパスの範囲を指定 | Cookieの利用範囲を制御 | /account/ に限定すれば他のページでは送信されない |
Domain | Cookieを送信できるドメインを指定 | サブドメイン間でCookieを共有可能 | .example.com とすれば a.example.com でも利用可能 |