ホーム > 情報処理安全確保支援士試験 > 2009年 秋期
情報処理安全確保支援士試験 2009年 秋期 午前2 問14
SQLインジェクション対策について,Webアプリケーションの実装における対策とWebアプリケーションの実装以外の対策の組合せとして,適切なものはどれか。

ア:
イ:
ウ:(正解)
エ:
解説
SQLインジェクション対策について【午前2 解説】
要点まとめ
- 結論:SQLインジェクション対策には、Webアプリの実装でバインド機構を使い、実装以外ではDBアクセス権限を最小限にすることが重要です。
- 根拠:バインド機構はSQL文とデータを分離し、不正なSQL挿入を防止。アクセス権限の最小化は被害拡大を抑制します。
- 差がつくポイント:単なる通信暗号化やセッション管理ではSQLインジェクション防止にならず、実装と運用の両面から対策を講じる視点が必要です。
正解の理由
選択肢ウは、Webアプリケーションの実装における対策として「バインド機構を利用する」ことを挙げています。これはプリペアドステートメントなどでSQL文とパラメータを分離し、SQLインジェクションを防ぐ代表的な手法です。また、実装以外の対策として「データベースのアカウントのもつデータベースアクセス権限を必要最小限にする」ことは、万が一攻撃を受けても被害範囲を限定できるため非常に有効です。これらの組み合わせがSQLインジェクション対策として最も適切です。
よくある誤解
SQLインジェクション対策は通信の暗号化やセッションIDの複雑化だけでは不十分です。SQL文の構造を守る実装上の対策と、権限管理の両面からの防御が必要です。
解法ステップ
- SQLインジェクションの基本的な仕組みを理解する(不正なSQL文の挿入)。
- Webアプリの実装で有効な対策は何かを考える(バインド機構の利用)。
- 実装以外の対策として、被害を最小限に抑える方法を検討する(DBアクセス権限の最小化)。
- 選択肢の内容を照合し、実装対策と実装以外の対策が適切に組み合わされているものを選ぶ。
選択肢別の誤答解説
- ア:Webアプリでシェルを起動しないのは安全策だが、SQLインジェクション対策としては直接的ではありません。chroot環境も限定的な対策です。
- イ:セッションIDの複雑化やSSLはセッション管理や通信の安全性向上策であり、SQLインジェクション防止には不十分です。
- ウ:正解。バインド機構によるSQL文の分離とDBアクセス権限の最小化はSQLインジェクション対策の基本かつ効果的な組み合わせです。
- エ:パス名やファイル名のパラメータ制限はファイル操作の安全策であり、SQLインジェクション対策とは異なります。重要ファイルの非公開も別のセキュリティ対策です。
補足コラム
SQLインジェクションは、ユーザ入力を直接SQL文に組み込むことで発生します。プリペアドステートメントやバインド変数を使うことで、SQL文の構造を固定し、入力値を単なるデータとして扱うため、攻撃を防げます。また、DBのアクセス権限を最小限にすることで、万が一侵入されても被害を限定できます。これらは多層防御の一環として重要です。
FAQ
Q: バインド機構はどのようにSQLインジェクションを防ぐのですか?
A: SQL文とパラメータを分離し、パラメータを単なるデータとして扱うため、不正なSQL構文が実行されません。
A: SQL文とパラメータを分離し、パラメータを単なるデータとして扱うため、不正なSQL構文が実行されません。
Q: なぜDBアクセス権限の最小化が重要なのですか?
A: 攻撃者が侵入しても、権限が限定されていれば被害範囲を狭められ、重要データの漏洩や改ざんを防げます。
A: 攻撃者が侵入しても、権限が限定されていれば被害範囲を狭められ、重要データの漏洩や改ざんを防げます。
Q: SSLはSQLインジェクション対策になりますか?
A: いいえ。SSLは通信の暗号化であり、SQL文の構造を守る対策ではないため、SQLインジェクション防止には直接効果がありません。
A: いいえ。SSLは通信の暗号化であり、SQL文の構造を守る対策ではないため、SQLインジェクション防止には直接効果がありません。
関連キーワード: SQLインジェクション, バインド機構, プリペアドステートメント, アクセス権限最小化, Webアプリケーションセキュリティ, 多層防御