SQLインジェクション対策

各選択肢の対策が「どの攻撃を防ぐものか」を特定しましょう。 ア:「プログラム中でシェルを起動しない」はOSコマンドインジェクション対策です。 イ:「セッションIDを乱数で生成する」はセッションハイジャック対策、「TLSによる秘匿」は盗聴対策です。 ウ:「パス名やファイル名をパラメータとして受け取らない」はディレクトリトラバーサル攻撃対策です。 エ:SQLインジェクション対策として、 プログラム実装側 ではパラメータを安全にバインドする「プレースホルダ(バインド機構)」の利用が根本対策となります。また、 実装以外の環境面 の対策(保険的対策)として、万が一SQLを操作されても被害を抑えるために「データベースアクセス権限を必要最小限にする」ことが適切です。

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

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

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

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

ア

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

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

イ

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

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

ウ

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

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

エ

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

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