情報処理安全確保支援士試験 情報処理安全確保支援士試験 平成30年度春期 午前Ⅱ 問17: SQL インジェクション対策について,Web アプリケーションの実装における対策と,Web アプリケーションの実装以外の対策として,ともに適切なものはどれか。
←情報処理安全確保支援士試験 平成30年度春期 午前Ⅱ
SQL インジェクション対策について,Web アプリケーションの実装における対策と,Web アプリケーションの実装以外の対策として,ともに適切なものはどれか。
| Web アプリケーションの実装における対策 | Web アプリケーションの実装以外の対策 |
|---|
| ア | Web アプリケーション中でシェルを起動しない。 | chroot 環境で Web サーバを稼働させる。 |
| イ | セッション ID を乱数で生成する。 | TLS によって通信内容を秘匿する。 |
| ウ | パス名やファイル名をパラメタとして受け取らないようにする。 | 重要なファイルを公開領域に置かない。 |
| エ | プレースホルダを利用する。 | データベースのアカウントがもつデータベースアクセス権限を必要最小限にする。 |
問題本文
SQL インジェクション対策について,Web アプリケーションの実装における対策と,Web アプリケーションの実装以外の対策として,ともに適切なものはどれか。
選択肢
- ア.Web アプリケーション中でシェルを起動しない。/chroot 環境で Web サーバを稼働させる。
- イ.セッション ID を乱数で生成する。/TLS によって通信内容を秘匿する。
- ウ.パス名やファイル名をパラメタとして受け取らないようにする。/重要なファイルを公開領域に置かない。
- エ.プレースホルダを利用する。/データベースのアカウントがもつデータベースアクセス権限を必要最小限にする。
正解
エ. プレースホルダを利用する。/データベースのアカウントがもつデータベースアクセス権限を必要最小限にする。
解説
SQLインジェクションの根本対策はプレースホルダ(プリペアドステートメント)で値とSQL構文を分離することで、これがアプリ実装側の正解。実装以外では、万一侵入されても被害を限定するため、DBアカウントの権限を必要最小限に絞るのが有効。両方を満たすエが正しい。他の選択肢はXSSやコマンドインジェクション等、別の脆弱性向けの対策が混在している。
選択肢ごとの解説
- ア.シェル不起動とchrootはOSコマンドインジェクション向けの対策で、SQLインジェクション対策ではない。
- イ.セッションID乱数化とTLS秘匿はセッション・盗聴対策で、SQLインジェクションの直接対策ではない。
- ウ.パス名を受け取らない等はディレクトリトラバーサル対策で、SQLインジェクションの対策に当たらない。
- エ.プレースホルダ利用とDB権限の最小化は、実装と実装以外の双方で有効なSQLインジェクション対策で正解。
情報処理安全確保支援士試験 平成30年度春期 午前Ⅱ の過去問一覧へ戻る・問17