基本情報技術者試験「クロスサイトスクリプティング」の問題
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)を混同する。本問の要件は後者である。
情報セキュリティの他の問題
A社の経理担当者が、取引先を装ったメールに添付された請求書ファイルを業務PCで開いたところ、見慣れない画面が一瞬表示されて消…B社のWebサービスで、複数の利用者アカウントに対し正しいIDとパスワードの組合せによるログインが短時間に外部から成立する事…C社では、退職予定者や異動者のアカウント権限の見直しが滞り、業務上不要になった共有フォルダへのアクセス権が残り続けている。情…D社のファイルサーバがランサムウェアに感染し、業務ファイルが暗号化された。D社は日次でバックアップを取得しているが、バックア…E社の従業員に、取引先銀行を名乗る『口座情報の更新が必要』というメールが届いた。本文中のリンク先URLにアクセスすると、銀行…F社は社外の従業員が、カフェなどの公衆無線LANを利用して社内システムへアクセスしている。通信内容が経路上で第三者に盗聴・改…
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-b-sec-0023