平成24年度 春期 午前 問43
セキュリティ
Web アプリケーションにおける脅威とそのセキュリティ対策の適切な組合せはどれか。
- アOS コマンドインジェクションを防ぐために,Web アプリケーションが発行するセッション ID を推測困難なものにする。
- イSQL インジェクションを防ぐために,Web アプリケーション内でデータベースへの問合せを作成する際にバインド機構を使用する。
- ウクロスサイトスクリプティングを防ぐために,外部から渡す入力データを Web サーバ内のファイル名として直接指定しない。
- エセッションハイジャックを防ぐために,Web アプリケーションからシェルを起動できないようにする。
答えと解説を見る
✓ これが正解イSQL インジェクションを防ぐために,Web アプリケーション内でデータベースへの問合せを作成する際にバインド機構を使用する。
解説
バインド機構は SQL インジェクションに効きます。
この設問は、脅威とその対策が正しく対になっているかを尋ねています。見分けの軸は、挙げられた対策が、並べて書かれた脅威に向けて働くものかどうか、という一点になります。この型では、肢を読む前に自分で正しい対を作ってしまうのが早道です。先に対を並べてから読み比べると、正しい対策の語に引きずられずに済みます。正しく組めているのは、SQL インジェクションとバインド機構の組合せです。バインド機構は、問合せの骨組みを先に決めておき、値だけを後から差し込む仕組みです。差し込まれたものは最初から値としてしか扱われませんので、その中に引用符や条件式のような文字列が混じっていても、命令の一部として読まれることがありません。危ない文字を探して取り除く方式と違い、消し漏れという抜け道が生まれないところが強みです。データベースへ渡す問合せを組み立てる場面では、文字列をつなぎ合わせて作るのではなく、この仕組みに任せる、と覚えておくと使い分けを誤りません。
ほかの選択肢はなぜ違うのか
- アOS コマンドインジェクションを防ぐため…:並べられているのは OS コマンドインジェクションと、推測しにくい識別子を発行する手当てです。後者が守るのはセッションハイジャックのほうで、外部から渡された文字列が命令として実行される脅威には届きません。
- ウクロスサイトスクリプティングを防ぐために…:外部から渡す入力をサーバ内のファイル名として直接指定しないのは、公開していない場所のファイルを読み出されるディレクトリトラバーサルへの手当てです。クロスサイトスクリプティングを止めるには、画面へ出す際の無害化が必要です。
- エセッションハイジャックを防ぐために,We…:シェルを起動できないようにするのは OS コマンドインジェクションへの手当てです。セッションハイジャックは、この制限をかけても利用者の識別子を盗まれれば起こりますので、二つは対になっていません。
この問題の用語
- クロスサイトスクリプティング出力処理の不備を突き、利用者のブラウザで攻撃者のスクリプトを動かす攻撃です。防ぐには、出力する文字を無害な形に置き換えます。
- セッションハイジャックログイン中の利用者のIDを盗み、なりすましてアクセスする攻撃です。推測しにくい乱数をセッションIDに使うことが対策になります。
- 脅威情報資産に害を及ぼしうる出来事や行為のもと。弱点である脆弱性と結び付いたときに、実際の被害につながります。
- データベースたくさんのデータを決まった形で貯め、探したり書き換えたりできるようにした仕組み。多くの人が同時に使うことを前提にしています。
出典:平成24年度 春期 応用情報技術者試験 午前 問43
同じ用語が出る問題
- 令和7年度 春期 午前 問37:サイドチャネル攻撃に該当するもの(脅威)
- 令和7年度 春期 午前 問36:脆弱性に関する問題(クロスサイトスクリプティング)
- 平成30年度 秋期 午前 問41(クロスサイトスクリプティング)
- 平成28年度 春期 午前 問41:セッションハイジャックの問題(セッションハイジャック)
- 平成27年度 秋期 午前 問44:ブルートフォース攻撃に関する問題(セッションハイジャック)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)