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

ア:
イ:
ウ:(正解)
エ:
解説
SQLインジェクション対策について【午前2 解説】
要点まとめ
- 結論:SQLインジェクション対策には、実装面でのバインド機構利用と実装外での最小権限設定が適切です。
- 根拠:バインド機構はSQL文とデータを分離し、攻撃を防止。最小権限設定は万一の侵害時の被害拡大を防ぎます。
- 差がつくポイント:単なる通信暗号化やファイル配置の工夫ではなく、SQL文の構造を守る実装と権限管理の両面対策が重要です。
正解の理由
選択肢ウは、Webアプリケーションの実装における対策として「バインド機構を利用する」ことを挙げています。これはプリペアドステートメントなどでSQL文とパラメータを分離し、SQLインジェクション攻撃を防ぐ代表的な手法です。また、実装以外の対策として「データベースのアカウントのもつアクセス権限を必要最小限にする」ことも重要です。これにより、万が一攻撃が成功しても被害範囲を限定できます。したがって、両面からの適切な対策として選択肢ウが正解です。
よくある誤解
SQLインジェクション対策は通信の暗号化やファイルの配置だけで十分と誤解されがちですが、攻撃の根本原因であるSQL文の構造を守る実装が不可欠です。
解法ステップ
- SQLインジェクションの攻撃手法を理解する(SQL文に悪意あるコードを挿入)。
- 実装面での防御策として、SQL文とパラメータを分離するバインド機構の利用を確認。
- 実装以外の対策として、データベースのアクセス権限を最小限に設定する重要性を把握。
- 選択肢の中でこれら両方を満たすものを選ぶ。
選択肢別の誤答解説
- ア:シェル起動禁止やchroot環境はサーバの安全性向上策であり、SQLインジェクション対策としては直接的でありません。
- イ:セッションIDの乱数生成やSSL通信はセッション管理や通信の安全性向上策であり、SQLインジェクション対策とは異なります。
- ウ:正解。バインド機構利用と最小権限設定はSQLインジェクション対策の基本です。
- エ:パス名やファイル名のパラメータ制限やファイル配置はファイル操作に関する対策であり、SQLインジェクション対策とは直接関係ありません。
補足コラム
SQLインジェクションは、ユーザ入力を直接SQL文に組み込むことで発生します。バインド機構(プリペアドステートメント)は、SQL文の構造を固定し、パラメータを別途扱うため、攻撃コードがSQL文として解釈されるのを防ぎます。また、データベースの権限を必要最小限にすることで、万一の侵害時に被害を限定できます。これらは多層防御の考え方に基づく重要な対策です。
FAQ
Q: バインド機構を使うとSQLインジェクションは完全に防げますか?
A: ほぼ防げますが、他の脆弱性や設定ミスがないかも併せて確認する必要があります。
A: ほぼ防げますが、他の脆弱性や設定ミスがないかも併せて確認する必要があります。
Q: なぜデータベースの権限を最小限にする必要があるのですか?
A: 攻撃者が侵入しても操作できる範囲を限定し、被害拡大を防ぐためです。
A: 攻撃者が侵入しても操作できる範囲を限定し、被害拡大を防ぐためです。
関連キーワード: SQLインジェクション, バインド機構, プリペアドステートメント, 最小権限設定, Webアプリケーションセキュリティ