IPA過去問ドリル

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

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

SQL インジェクション対策について,Web アプリケーションプログラムの実装における対策と,Web アプリケーションプログラムの実装以外の対策として,ともに適切なものはどれか。

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

正解:エ

解説

SQL インジェクション対策は,Web アプリケーションプログラムの実装における対策と,実装以外(インフラやミドルウェアの設定など)の対策とに分けて考えることができます。実装における対策としては,SQL 文の組立てにプレースホルダ(バインド機構)を利用し,入力値をパラメータとして安全にバインドすることで不正な SQL 文の混入を防ぐことが基本です。一方,実装以外の対策としては,Web アプリケーションプログラムが利用するデータベースアカウントに付与するデータベースアクセス権限を必要最小限に絞ることで,仮に SQL インジェクションが成立してしまった場合でも被害を最小限に抑える,多層防御の考え方が有効です。

選択肢ごとの解説

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