ITパスポート 2012年 秋期 問60
問題文
クロスサイトスクリプティングの特徴に関する記述として、適切なものはどれか。
選択肢
ア:Webサイトに入力されたデータに含まれる悪意あるスクリプトを、そのままWebブラウザに送ってしまうという脆弱性を利用する。(正解)
イ:入力されたデータの長さをチェックしていないWebサイト上のアプリケーションに対し、長すぎるデータを送りつける。
ウ:有用なソフトウェアに見せかけて利用者にインストールさせ、コンピュータに侵入する。
エ:ワープロソフトや表計算ソフトの操作手順を記録し、呼び出して実行する機能を不正に利用する。
🔒 解説は解答すると表示されます
クロスサイトスクリプティングの特徴に関する記述【ITパスポート 解説】
正解の理由
クロスサイトスクリプティング(XSS:Cross-Site Scripting;ウェブサイト上で利用者のブラウザ内で悪意あるスクリプトを実行させる攻撃)は、利用者が入力したデータをそのまま(無加工で)HTMLページとして返し、ブラウザ側でスクリプトが実行されてしまうことを悪用します。選択肢アはこの特徴をそのまま述べているため正解です。
(用語補足)
- ブラウザ(web browser):ウェブページを見るためのソフト(例:Chrome、Safari)。
- スクリプト:ウェブページ上で動くプログラム(例:JavaScript)。
解法ステップ
- 問題文からキーワードを探す:「悪意あるスクリプト」「Webブラウザに送ってしまう」「入力されたデータをそのまま」など。
- XSSの定義を思い出す:攻撃者がHTMLやJavaScriptを注入し、他の利用者のブラウザで実行させる攻撃。
- 選択肢と照合する:
- スクリプトがブラウザ上で実行されることを説明しているものが該当。
- 正しい選択肢を選ぶ:アが一致するため正解。
短く言うと、「入力をそのまま返してブラウザで悪いスクリプトが動く」=XSS、これがアの内容です。
選択肢別の誤答解説
- ア(正解)
- 利用者の入力に含まれる悪意あるスクリプトをそのまま返し、他の利用者のブラウザで実行されるという説明で、XSSそのものです。
- イ
- 「入力の長さをチェックしていない」「長すぎるデータを送りつける」はバッファオーバーフロー(バッファオーバーラン)や、リソース枯渇による障害に関する記述です。XSSとは別の脆弱性です。
- ウ
- 「有用なソフトに見せかけてインストールさせる」はトロイの木馬(Trojan horse:悪意あるソフトを正規ソフトに偽装する)の説明です。これもXSSとは異なります。
- エ
- 「ワープロや表計算ソフトの操作手順を記録し実行する機能を悪用する」はマクロウイルス(officeのマクロ機能を悪用する攻撃)の説明です。XSSではありません。
よくある誤解
- 「スクリプトがサーバで動く攻撃」と混同する
- XSSは攻撃コードが利用者のブラウザで実行されます。サーバ側でコードが動く攻撃(例:サーバ上で任意コード実行される脆弱性)とは別です。
- 「入力チェックだけで十分」と考える誤り
- 入力チェックは重要ですが、表示時の「エスケープ(特殊文字の置換)」やコンテンツセキュリティポリシー(CSP)など多層防御が必要です。
補足コラム
XSSの主な種類(簡単に)
- Stored XSS(保存型): 悪意あるスクリプトがサーバに保存され、他の利用者が見ると実行される(掲示板やコメント欄など)。
- Reflected XSS(反射型): 不正なスクリプトがURLやフォームを通じて送られ、その場でレスポンスに反映されて実行される(フィッシングリンクで多い)。
- DOM-based XSS(DOMベース): ブラウザ側の処理(DOM操作)で直接スクリプトが実行される。
簡単な対策(すぐ役立つ順)
- 出力時にエスケープ(例:「<」を「<」に置き換える)を行う。
- 入力値の検証(想定外のタグや属性を拒否)。
- HTTPOnly属性付きのクッキーを使う(ブラウザのスクリプトからは閲覧不可にする)。
- Content Security Policy(CSP)で実行できるスクリプトの出所を制限する。
例:HTMLでの簡易エスケープ(考え方)
- 入力「」をそのまま出すと危険。
- エスケープして「<script>alert(1)</script>」と表示させれば、スクリプトは実行されず文字列として見える。
FAQ
Q1: XSSで何が盗まれるのですか?
A1: 主にブラウザ上の情報が狙われます。具体的にはクッキー(ログイン情報に使われることがある)、セッション情報、フォームの入力内容などが盗まれる可能性があります。
A1: 主にブラウザ上の情報が狙われます。具体的にはクッキー(ログイン情報に使われることがある)、セッション情報、フォームの入力内容などが盗まれる可能性があります。
Q2: XSSとSQLインジェクションは同じですか?
A2: 異なります。XSSはブラウザ側でのスクリプト実行を狙う攻撃です。SQLインジェクションはデータベースへの不正な命令実行を狙う攻撃で、サーバ側のデータが狙われます。
A2: 異なります。XSSはブラウザ側でのスクリプト実行を狙う攻撃です。SQLインジェクションはデータベースへの不正な命令実行を狙う攻撃で、サーバ側のデータが狙われます。
Q3: 一般の利用者ができる予防はありますか?
A3: ブラウザやプラグインを常に最新に保つ、怪しいリンクをクリックしない、信頼できないサイトでログイン情報を入力しない、といった行動が有効です。
A3: ブラウザやプラグインを常に最新に保つ、怪しいリンクをクリックしない、信頼できないサイトでログイン情報を入力しない、といった行動が有効です。
関連キーワード: クロスサイトスクリプティング、XSS、エスケープ、サニタイズ、Content Security Policy、バッファオーバーフロー、トロイの木馬、マクロウイルス、HTTPOnly、入力検証

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

