SQLインジェクション対策

SQLインジェクションは,利用者の入力値に含まれる特殊文字(引用符など)によって開発者が意図しない不正なSQL文が組み立てられ,データベースが不正に操作される脆弱性です。この根本的対策は,SQL文の構文(命令の骨格)とユーザー入力値(パラメータ)を完全に分離して処理する「プレースホルダ(バインド機構 / Prepared Statement)」を利用することです。プレースホルダを用いれば,入力値がどのような文字列であっても単なる「リテラル値」として安全に扱われ,SQL構文として解釈・実行される余地を完全に排除できます。 推測困難なセッションIDの発行は「セッションハイジャック」への対策です。OSコマンドインジェクション対策としてはシェル呼び出しの回避や引数のエスケープが必要です。 ファイルの直接参照制限は機密ファイルの閲覧防止策です。XSS(クロスサイトスクリプティング)の根本対策はHTML出力時の適切なエスケープ処理です。 シェルを起動させない対策は「OSコマンドインジェクション」に対する防御策です。セッションハイジャック対策ではありません。

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

出典令和5年度 情報セキュリティマネジメント試験 科目A 問7
ア
OSコマンドインジェクションを防ぐために,Webアプリケーションが発行するセッションIDに推測困難な乱数を使用する。
イ
SQLインジェクションを防ぐために,Webアプリケーション内でデータベースへの問合せを作成する際にプレースホルダを使用する。
ウ
クロスサイトスクリプティングを防ぐために,Webサーバ内のファイルを外部から直接参照できないようにする。
エ
セッションハイジャックを防ぐために,Webアプリケーションからシェルを起動できないようにする。