情報処理安全確保支援士試験 情報処理安全確保支援士試験 令和元年度秋期 午前Ⅱ 問17: SQL インジェクション対策について,Web アプリケーションプログラムの実装における対策と,Web アプリケーションプログラムの実装以外の対策として,ともに適
←情報処理安全確保支援士試験 令和元年度秋期 午前Ⅱ
SQL インジェクション対策について,Web アプリケーションプログラムの実装における対策と,Web アプリケーションプログラムの実装以外の対策として,ともに適切なものはどれか。
| Web アプリケーションプログラムの実装における対策 | Web アプリケーションプログラムの実装以外の対策 |
|---|
| ア | Web アプリケーションプログラム中でシェルを起動しない。 | chroot 環境で Web サーバを稼働させる。 |
| イ | セッション ID を乱数で生成する。 | TLS によって通信内容を秘匿する。 |
| ウ | パス名やファイル名をパラメタとして受け取らないようにする。 | 重要なファイルを公開領域に置かない。 |
| エ | プレースホルダを利用する。 | Web アプリケーションプログラムが利用するデータベースのアカウントがもつデータベースアクセス権限を必要最小限にする。 |
問題本文
SQL インジェクション対策について,Web アプリケーションプログラムの実装における対策と,Web アプリケーションプログラムの実装以外の対策として,ともに適切なものはどれか。
選択肢
- ア.実装における対策:Web アプリケーションプログラム中でシェルを起動しない。/実装以外の対策:chroot 環境で Web サーバを稼働させる。
- イ.実装における対策:セッション ID を乱数で生成する。/実装以外の対策:TLS によって通信内容を秘匿する。
- ウ.実装における対策:パス名やファイル名をパラメタとして受け取らないようにする。/実装以外の対策:重要なファイルを公開領域に置かない。
- エ.実装における対策:プレースホルダを利用する。/実装以外の対策:Web アプリケーションプログラムが利用するデータベースのアカウントがもつデータベースアクセス権限を必要最小限にする。
正解
エ. 実装における対策:プレースホルダを利用する。/実装以外の対策:Web アプリケーションプログラムが利用するデータベースのアカウントがもつデータベースアクセス権限を必要最小限にする。
解説
SQLインジェクション対策の本筋は、SQL文の構造と値を分離するプレースホルダ(バインド機構)を使う実装である。さらに被害を抑える実装外の対策として、DBアカウントの権限を必要最小限にすれば万一の侵入時の影響を限定できる。両者が適切なのはエ。他の選択肢はOSコマンドインジェクションやセッション管理、ディレクトリトラバーサルなど別脆弱性向けの対策で、SQLi対策としては的外れ。
選択肢ごとの解説
- ア.シェル非起動やchrootはOSコマンドインジェクション対策で、SQLインジェクション対策ではない。
- イ.セッションID乱数化やTLSはセッション保護や盗聴対策で、SQLインジェクションを防ぐものではない。
- ウ.パス名を受け取らない等はディレクトリトラバーサル対策で、SQLインジェクション対策ではない。
- エ.プレースホルダ利用とDB権限の最小化はSQLインジェクションの実装・実装外対策として適切で正解。
情報処理安全確保支援士試験 令和元年度秋期 午前Ⅱ の過去問一覧へ戻る・問17