情報セキュリティ

基本情報技術者試験クロスサイトスクリプティング」の問題

情報セキュリティ情報セキュリティ難易度:hard
W社のWebサービスでは、過去にXSSによりセッションCookieが盗まれる被害があった。XSSの修正と並行し、万一スクリプトの実行を許しても、JavaScriptからセッションCookieを読み取れないようにする多層防御を行いたい。最も適切な対策はどれか。
セッションCookieの有効期限を短くし、放置されたセッションをより早く失効させる。
セッションCookieにSecure属性を付け、暗号化された通信でのみ送らせる。
セッションCookieにHttpOnly属性を付け、スクリプトからの参照を遮断する。
セッションCookieに利用者名を含め、後から所有者を判別できるようにする。
正解
セッションCookieにHttpOnly属性を付け、スクリプトからの参照を遮断する。

求められているのは『スクリプト実行を許してもCookieを読まれない』多層防御である。CookieにHttpOnly属性を付与すると、そのCookieはJavaScriptのスクリプトから参照できなくなる。したがってXSSでスクリプトが実行されても、セッションCookieの値を読み出して外部送信できず、窃取を防げる。要件に直接対応している。

?選択肢ごとの解説

ア ×有効期限の短縮は窃取後の悪用可能時間を縮めるが、スクリプトがCookieを読み取って盗む行為そのものは防げない。
イ ×Secure属性は暗号化された通信路でのみ送信させ盗聴を防ぐ属性で、ページ内で動くスクリプトからの読取り自体は制限しないため要件を満たさない。
ウ ○求められているのは『スクリプト実行を許してもCookieを読まれない』多層防御である。CookieにHttpOnly属性を付与すると、そのCookieはJavaScriptのスクリプトから参照できなくなる。したがってXSSでスクリプトが実行されても、セッションCookieの値を読み出して外部送信できず、窃取を防げる。要件に直接対応している。
エ ×利用者名を含めると情報が露出して逆効果であり、スクリプトからの読取り自体は何ら制限できない。

くわしく

XSSとセッション窃取の関係では、根本対策(出力時エスケープ)に加え、被害を抑える多層防御としてCookie属性の活用が重要である。HttpOnlyはスクリプトからの読取りを、Secureは平文経路での送出を防ぎ、役割が異なる。

本番での押さえどころ

試験のコツ

『スクリプトが動いてもCookieを読ませない』ならHttpOnly属性。Secure(経路保護)や有効期限とは目的が異なる。

覚え方

HttpOnlyは『スクリプト立入禁止の札』。札を貼ればJavaScriptは中(Cookie)を覗けない。

よくある誤り

Secure属性(経路保護)や有効期限短縮と、スクリプトからの読取り防止(HttpOnly)を混同する。本問の要件は後者である。

情報セキュリティの他の問題

この問題を、AIの8-ways解説つきで。

基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。

無料ではじめる →

ukamiru 過去問 · 基本情報技術者試験 · fe-b-sec-0023

【基本情報技術者試験】クロスサイトスクリプティングの問題 — 解答・解説|ukamiru 過去問