正答2
解説
正解は2です。
Webアプリケーションに対する代表的な攻撃と、その対策の組合せを問う問題です。
選択肢の対策は、どれも実在するものですが、組み合わされている脅威が入れ替わっているものがあります。
【選択肢別解説】
1:× セッションIDを推測困難にするのは、セッションハイジャックの対策です。
OSコマンドインジェクションには、シェルを起動しない実装などで対策します。
2:○ SQLインジェクションは、入力値がSQL文の一部として解釈されることで起こります。
バインド機構(プレースホルダ)を使えば入力値は値としてだけ扱われるので、攻撃を防げます。
3:× 入力データでサーバ内のファイル名を直接指定させないのは、ディレクトリトラバーサルの対策です。
クロスサイトスクリプティングには、出力時のエスケープ処理で対策します。
4:× Webアプリケーションからシェルを起動できないようにするのは、OSコマンドインジェクションの対策です。
セッションハイジャックには、推測困難なセッションIDを使うなどで対策します。
【ポイント】
SQLインジェクションはバインド機構、クロスサイトスクリプティングはエスケープ、OSコマンドインジェクションはシェルを使わない実装が基本の対策です。
選択肢1と4のように、対策と脅威が入れ替えられた形がよく出題されます。