IPA過去問ドリル

令和5年度 春期 情報処理安全確保支援士試験 午前Ⅱ 問17

テクノロジ/セキュリティ

SQL インジェクション対策について,Web アプリケーションプログラムの実装における対策と,Web アプリケーションプログラムの実装以外の対策の組みとして,適切なものはどれか。 (注:本サイトでは原問題の選択肢の表を文字表記に変換しています)

出典:令和5年度 春期 情報処理安全確保支援士試験 午前Ⅱ 問17

正解:エ

解説

SQL インジェクション対策のうち,Web アプリケーションプログラムの実装における対策としては,SQL 文の組立てにプレースホルダ(バインド機構)を利用し,パラメータを文字列連結せずに受け渡すことで不正な SQL 構文の注入を防ぐ方法が代表的です。これに加えて,実装以外の対策として,仮に SQL インジェクションが成立してしまった場合の被害を最小化するため,Web アプリケーションプログラムが利用するデータベースアカウントに付与するデータベースアクセス権限を必要最小限に絞る多層防御の考え方が重要です。

選択肢ごとの解説

  • 誤り。シェルを起動しないことは OS コマンドインジェクション対策であり,chroot 環境での稼働はシステムの隔離による被害局限化の対策です。いずれも SQL インジェクションに直接対応する対策ではありません。
  • 誤り。セッション ID の乱数生成はセッションハイジャック対策,TLS による通信の秘匿は盗聴対策であり,SQL インジェクション対策ではありません。
  • 誤り。パス名やファイル名をパラメータとして受け取らないこと,重要なファイルを公開領域に置かないことは,パストラバーサルなどのファイル関連の攻撃への対策です。
  • 正しい。プレースホルダの利用は実装における代表的な SQL インジェクション対策であり,データベースアクセス権限の必要最小限化は実装以外の対策として被害を局限化します。
情報処理安全確保支援士の過去問を演習モードで解く