基本情報技術者試験「クロスサイトスクリプティング」の問題
あるサイトの検索結果画面は、利用者がURLで渡した検索語を『〇〇の検索結果』という形でHTML本文にそのまま出力している。細工した検索語を含むURLを被害者に踏ませると、被害者のブラウザでスクリプトが実行される反射型XSSが指摘された。この問題への根本対策として、最も適切なものはどれか。
ウ画面へ出力する直前に、出る先の文脈に応じて特殊文字を無害な表記へ置き換えてから渡す。
ア検索語に使える文字数の上限を短く設定し、それより長い検索語は受け付けないようにする。
イ検索結果画面のURLを利用者ごとに毎回異なる値とし、同じURLを後から再び使えないように変える。
エ検索機能の利用にログインを必須とし、未ログインの状態での検索は行えないように制限する。
正解
ウ.画面へ出力する直前に、出る先の文脈に応じて特殊文字を無害な表記へ置き換えてから渡す。
反射型XSSの原因は、要求パラメータの検索語を無加工でHTMLに出力している点にある。画面へ出力する直前に、出る先がHTML本文か属性かなどの出力文脈に応じて<や>、&などの特殊文字を無害な表記へ置き換えれば、細工された検索語はタグではなく単なる文字列として表示され、ブラウザ上でスクリプトとして実行されなくなる。これが根本対策である。
?選択肢ごとの解説
ウ ○反射型XSSの原因は、要求パラメータの検索語を無加工でHTMLに出力している点にある。画面へ出力する直前に、出る先がHTML本文か属性かなどの出力文脈に応じて<や>、&などの特殊文字を無害な表記へ置き換えれば、細工された検索語はタグではなく単なる文字列として表示され、ブラウザ上でスクリプトとして実行されなくなる。これが根本対策である。
ア ×文字数上限の短縮は入力長を制限するだけで、攻撃に必要な短いスクリプトは収まるため、スクリプトの実行は防げない。
イ ×URLを毎回異なる値にしても、被害者を踏ませる細工URLにその値を含めれば成立するため、反射型XSSの実行自体は阻止できない。
エ ×ログイン必須化は利用者を限定するだけで、認証後の利用者や奪取アカウントを踏ませれば成立し、出力時にスクリプトが実行される問題を解消しない。
✎くわしく
XSSは入力ではなく『出力時にスクリプトとして解釈されること』が本質であり、対策の要は出力文脈(HTML本文・属性値・JavaScript内・URL内など)に応じた適切なエスケープである。反射型でも格納型でも、根本対策はこの出力時無害化で共通する。
✓本番での押さえどころ
試験のコツ
反射型・格納型を問わずXSSの根本対策は出力時の文脈に応じたエスケープ。入力長やログイン制御では防げない。
覚え方
反射型も『画面に出す前に牙を抜く』。URL由来の値もそのまま出さずエスケープ。
よくある誤り
文字数制限やログイン制御で防げると考えがちだが、XSSは短いコードでも成立し、肝は出力時にスクリプトとして解釈させないことである。
情報セキュリティの他の問題
A社の経理担当者が、取引先を装ったメールに添付された請求書ファイルを業務PCで開いたところ、見慣れない画面が一瞬表示されて消…B社のWebサービスで、複数の利用者アカウントに対し正しいIDとパスワードの組合せによるログインが短時間に外部から成立する事…C社では、退職予定者や異動者のアカウント権限の見直しが滞り、業務上不要になった共有フォルダへのアクセス権が残り続けている。情…D社のファイルサーバがランサムウェアに感染し、業務ファイルが暗号化された。D社は日次でバックアップを取得しているが、バックア…E社の従業員に、取引先銀行を名乗る『口座情報の更新が必要』というメールが届いた。本文中のリンク先URLにアクセスすると、銀行…F社は社外の従業員が、カフェなどの公衆無線LANを利用して社内システムへアクセスしている。通信内容が経路上で第三者に盗聴・改…
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-b-sec-0107