令和5年度 春期 情報処理安全確保支援士試験 午前Ⅱ 問17
テクノロジ/セキュリティSQL インジェクション対策について,Web アプリケーションプログラムの実装における対策と,Web アプリケーションプログラムの実装以外の対策の組みとして,適切なものはどれか。 (注:本サイトでは原問題の選択肢の表を文字表記に変換しています)
出典:令和5年度 春期 情報処理安全確保支援士試験 午前Ⅱ 問17
- ア実装における対策:Web アプリケーションプログラム中でシェルを起動しない。,実装以外の対策:chroot 環境で Web サーバを稼働させる。
- イ実装における対策:セッション ID を乱数で生成する。,実装以外の対策:TLS によって通信内容を秘匿する。
- ウ実装における対策:パス名やファイル名をパラメータとして受け取らないようにする。,実装以外の対策:重要なファイルを公開領域に置かない。
- エ実装における対策:プレースホルダを利用する。,実装以外の対策:Web アプリケーションプログラムが利用するデータベースのアカウントがもつデータベースアクセス権限を必要最小限にする。
正解:エ
解説
SQL インジェクション対策のうち,Web アプリケーションプログラムの実装における対策としては,SQL 文の組立てにプレースホルダ(バインド機構)を利用し,パラメータを文字列連結せずに受け渡すことで不正な SQL 構文の注入を防ぐ方法が代表的です。これに加えて,実装以外の対策として,仮に SQL インジェクションが成立してしまった場合の被害を最小化するため,Web アプリケーションプログラムが利用するデータベースアカウントに付与するデータベースアクセス権限を必要最小限に絞る多層防御の考え方が重要です。
選択肢ごとの解説
- ア誤り。シェルを起動しないことは OS コマンドインジェクション対策であり,chroot 環境での稼働はシステムの隔離による被害局限化の対策です。いずれも SQL インジェクションに直接対応する対策ではありません。
- イ誤り。セッション ID の乱数生成はセッションハイジャック対策,TLS による通信の秘匿は盗聴対策であり,SQL インジェクション対策ではありません。
- ウ誤り。パス名やファイル名をパラメータとして受け取らないこと,重要なファイルを公開領域に置かないことは,パストラバーサルなどのファイル関連の攻撃への対策です。
- エ正しい。プレースホルダの利用は実装における代表的な SQL インジェクション対策であり,データベースアクセス権限の必要最小限化は実装以外の対策として被害を局限化します。