情報処理安全確保支援士試験 情報セキュリティスペシャリスト試験 平成27年度春期 午前Ⅱ 問17: SQLインジェクション対策について,Webアプリケーションの実装における対策とWebアプリケーションの実装以外の対策として,ともに適切なものはどれか。
←情報セキュリティスペシャリスト試験 平成27年度春期 午前Ⅱ
対策について,Webアプリケーションの実装における対策とWebアプリケーションの実装以外の対策として,ともに適切なものはどれか。
| Webアプリケーションの実装における対策 | Webアプリケーションの実装以外の対策 |
|---|
| ア | Webアプリケーション中でシェルを起動しない。 | chroot環境でWebサーバを稼働させる。 |
| イ | セッションIDを乱数で生成する。 | TLSによって通信内容を秘匿する。 |
| ウ | パス名やファイル名をパラメタとして受け取らないようにする。 | 重要なファイルを公開領域に置かない。 |
| エ | プレースホルダを利用する。 | データベースのアカウントがもつデータベースアクセス権限を必要最小限にする。 |
問題本文
SQLインジェクション対策について,Webアプリケーションの実装における対策とWebアプリケーションの実装以外の対策として,ともに適切なものはどれか。
選択肢
- ア.Webアプリケーション中でシェルを起動しない。/chroot環境でWebサーバを稼働させる。
- イ.セッションIDを乱数で生成する。/TLSによって通信内容を秘匿する。
- ウ.パス名やファイル名をパラメタとして受け取らないようにする。/重要なファイルを公開領域に置かない。
- エ.プレースホルダを利用する。/データベースのアカウントがもつデータベースアクセス権限を必要最小限にする。
正解
エ. プレースホルダを利用する。/データベースのアカウントがもつデータベースアクセス権限を必要最小限にする。
解説
SQLインジェクション対策の本命は、アプリ実装ではプレースホルダ(バインド機構)を使い、入力値をSQL構文ではなくデータとして扱うこと。実装以外では、万一突破された場合の被害を抑えるため、DBアカウントの権限を必要最小限にする多層防御が有効。実務ではこの両輪で、注入の防止と侵害時の被害局限を同時に確保する。
選択肢ごとの解説
- ア.シェル起動回避やchrootはOSコマンドインジェクション側の対策であり、SQLインジェクションの対策ではないため誤り。
- イ.乱数セッションIDやTLSはセッション保護・盗聴対策であり、SQLインジェクション対策ではないため誤り。
- ウ.パス名を受け取らない等はディレクトリトラバーサル対策であり、SQLインジェクションの対策ではないため誤り。
- エ.プレースホルダ利用とDB権限の最小化はSQLインジェクションの実装内・実装外対策として正しい。
情報セキュリティスペシャリスト試験 平成27年度春期 午前Ⅱ の過去問一覧へ戻る・問17