SQLインジェクション対策の組合せ

SQLインジェクションでは、入力値をSQL構文として解釈させないことと、侵害時の影響を限定することが必要です。 プレースホルダによるパラメータ化 と DB権限の最小化 は両方とも直接的な対策です。 ア:シェル起動禁止とchrootはOSコマンド実行やWebサーバ侵害の影響を抑える対策で、SQL文の注入を防ぐ組合せではありません。 イ:セッションIDの乱数化はセッション推測、TLSは通信盗聴への対策であり、SQL生成処理は安全になりません。 ウ:パス名・ファイル名の制限と公開領域の管理はディレクトリトラバーサルなどへの対策です。 エ:プレースホルダは入力とSQL構文を分離し、最小権限は攻撃成立時に実行可能な操作範囲を狭めます。

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

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

Webアプリケーションプログラムの実装における対策

Webアプリケーションプログラムの実装以外の対策

ア

Webアプリケーションプログラム中でシェルを起動しない。

chroot環境でWebサーバを稼働させる。

イ

セッションIDを乱数で生成する。

TLSによって通信内容を秘匿する。

ウ

パス名やファイル名をパラメータとして受け取らないようにする。

重要なファイルを公開領域に置かない。

エ

プレースホルダを利用する。

Webアプリケーションプログラムが利用するデータベースのアカウントがもつデータベースアクセス権限を必要最小限にする。