Webアプリケーションにおけるセキュリティ上の脅威とその対策に関する記述のうち,適切なものはどれか。

情報セキュリティ対策

OSコマンドインジェクションを防ぐために,Webアプリケーションが発行するセッションIDに推測困難な乱数を使用する。

なぜ違う: 推測困難なセッションIDはセッションハイジャック対策であり,OSコマンドの不正実行を直接防がない。

SQLインジェクションを防ぐために,Webアプリケーション内でデータベースへの問合せを作成する際にプレースホルダを使用する。
クロスサイトスクリプティングを防ぐために,Webサーバ内のファイルを外部から直接参照できないようにする。

なぜ違う: XSSには出力時のエスケープなどが必要であり,サーバ内ファイルへの直接参照を禁止する対策とは異なる。

セッションハイジャックを防ぐために,Webアプリケーションからシェルを起動できないようにする。

なぜ違う: シェル起動の制限はOSコマンドインジェクション対策に関係し,セッションIDの窃取・推測対策ではない。

正解: イ

プレースホルダを使ったパラメータ化クエリでは,SQL文の構造と利用者が入力した値を分離してデータベースへ渡す。入力値がSQLの命令として解釈されないため,SQLインジェクションの有効な対策となる。

出典:令和5年度 情報セキュリティマネジメント試験 科目A・B 公開問題 問7