平成26年度 秋期 午前 問40
セキュリティ
Web アプリケーションにおけるセキュリティ上の脅威と対策の適切な組合せはどれか。
- アOS コマンドインジェクションを防ぐために,Web アプリケーションが発行するセッション ID を推測困難なものにする。
- イSQL インジェクションを防ぐために,Web アプリケーション内でデータベースへの問合せを作成する際にバインド機構を使用する。
- ウクロスサイトスクリプティングを防ぐために,外部から渡す入力データを Web サーバ内のファイル名として直接指定しない。
- エセッションハイジャックを防ぐために,Web アプリケーションからシェルを起動できないようにする。
答えと解説を見る
✓ これが正解イSQL インジェクションを防ぐために,Web アプリケーション内でデータベースへの問合せを作成する際にバインド機構を使用する。
解説
問合せの骨組みと値を分けるのがバインド機構です。
設問は、Web アプリケーションにおける脅威と対策の適切な組合せを選ばせています。この型では、四つの記述に並んでいる対策がどれも実在の正しい手当てになっています。ですから、その対策が正しいかどうかで選ぶと行き先を誤ります。見るのは、挙げられた脅威と、その隣に置かれた対策が対になっているかどうかだけです。先に自分で対応表を書いてから当てはめると確実です。よって、SQL インジェクションに対してバインド機構を使う、という組合せが当てはまります。これが効く理由も押さえておきましょう。問合せの骨組みを先に組み立てておき、外から渡された入力は後から値としてだけ差し込みます。すると、入力に引用符や注釈の記号が混ざっていても、問合せの文法の一部としては解釈されません。文字列をつなぎ合わせて問合せを組み立てると、入力が文法そのものに割り込む余地が生まれます。記号を置き換える手当てでも防げますが、取りこぼしが起きやすいので、こちらが本筋になります。
ほかの選択肢はなぜ違うのか
- アOS コマンドインジェクションを防ぐため…:挙げられている対策そのものは正しい手当てです。ただし、推測されにくい識別子を使うのは、利用者のやり取りの続きを横取りされないための備えであって、外部から渡した文字列を命令として実行させられる弱点への備えではありません。
- ウクロスサイトスクリプティングを防ぐために…:外部から渡された値をそのままファイルの指定に使わないのは、置いてある場所をたどられて公開するつもりのないファイルを読まれる弱点への備えです。クロスサイトスクリプティングには、書き出すときに記号を無害な形へ置き換える手当てが必要です。
- エセッションハイジャックを防ぐために,We…:こちらも対策の側は正しく、外部から渡した文字列が命令として実行されてしまう弱点への備えにあたります。並べてある脅威とは相手が入れ替わっており、ちょうど一つ目の記述と対策を交換した形になっています。
この問題の用語
- クロスサイトスクリプティング出力処理の不備を突き、利用者のブラウザで攻撃者のスクリプトを動かす攻撃です。防ぐには、出力する文字を無害な形に置き換えます。
- 脅威情報資産に害を及ぼしうる出来事や行為のもと。弱点である脆弱性と結び付いたときに、実際の被害につながります。
- データベースたくさんのデータを決まった形で貯め、探したり書き換えたりできるようにした仕組み。多くの人が同時に使うことを前提にしています。
- セッションハイジャックログイン中の利用者のIDを盗み、なりすましてアクセスする攻撃です。推測しにくい乱数をセッションIDに使うことが対策になります。
出典:平成26年度 秋期 応用情報技術者試験 午前 問40
同じ用語が出る問題
- 令和7年度 春期 午前 問37:サイドチャネル攻撃に該当するもの(脅威)
- 令和7年度 春期 午前 問36:脆弱性に関する問題(クロスサイトスクリプティング)
- 平成30年度 秋期 午前 問41(クロスサイトスクリプティング)
- 平成28年度 春期 午前 問41:セッションハイジャックの問題(セッションハイジャック)
- 平成27年度 秋期 午前 問44:ブルートフォース攻撃に関する問題(セッションハイジャック)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)