情報処理安全確保支援士試験 2012年 春期 午前216


SQL インジェクション対策について, Web アプリケーションの実装における対策と Web アプリケーションの実装以外の対策として, ともに適切なものはどれか。
選択肢画像
(正解)

解説

SQLインジェクション対策について【午前2 解説】

要点まとめ

  • 結論:SQLインジェクション対策は、実装面でバインド機構を利用し、実装以外ではデータベースのアクセス権限を最小限にすることが適切です。
  • 根拠:バインド機構はSQL文とデータを分離し、不正なSQL挿入を防止。アクセス権限の最小化は被害拡大を防ぎます。
  • 差がつくポイント:単なる通信暗号化やファイル配置の工夫ではなく、SQL文の構造を守る実装技術と権限管理の組み合わせが重要です。

正解の理由

選択肢「ウ」は、Webアプリケーションの実装における対策として「バインド機構を利用する」こと、実装以外の対策として「データベースのアカウントのアクセス権限を必要最小限にする」ことを挙げています。
バインド機構(プリペアドステートメント)は、SQL文とパラメータを分離し、ユーザ入力がSQL文の構造を変えられないようにするため、SQLインジェクションの根本的な防止策です。
また、万が一インジェクションが成功しても、データベースのアクセス権限を最小限にしておくことで、被害範囲を限定できます。これらはSQLインジェクション対策の基本かつ効果的な方法です。

よくある誤解

  • SSLやセッションIDの強化は通信の安全性向上に役立ちますが、SQLインジェクションの直接的な防止策ではありません。
  • シェル起動禁止やファイル配置の工夫はセキュリティ向上に有効ですが、SQLインジェクション対策としては不十分です。

解法ステップ

  1. SQLインジェクションの特徴を理解する(ユーザ入力がSQL文に悪意を持って挿入される攻撃)。
  2. 実装面での防御策として、SQL文とパラメータを分離するバインド機構の利用を確認。
  3. 実装以外の対策として、データベースのアクセス権限を最小限に設定し、被害拡大を防ぐことを確認。
  4. 他の選択肢が通信暗号化やファイル管理など、SQLインジェクションの直接対策として不適切であることを判断。
  5. 「ウ」が両面で適切な対策を示しているため正解とする。

選択肢別の誤答解説

  • ア:シェル起動禁止やchroot環境はサーバの安全性向上策ですが、SQLインジェクションの防止策としては直接的でありません。
  • イ:セッションIDの複雑化やSSLは通信の安全性向上に寄与しますが、SQL文の改ざん防止にはつながりません。
  • :バインド機構の利用とアクセス権限の最小化はSQLインジェクション対策として最も効果的です。
  • エ:パス名やファイル名のパラメタ制限やファイル配置の工夫はファイル操作の安全性向上策であり、SQLインジェクション対策とは異なります。

補足コラム

SQLインジェクションは、ユーザ入力を直接SQL文に埋め込むことで発生します。プリペアドステートメントやバインド変数を使うことで、SQL文の構造を固定し、入力値を単なるデータとして扱うため、攻撃を防げます。
また、データベースの権限管理は「最小権限の原則」に基づき、必要な操作だけを許可することで、万一の侵害時の被害を抑制します。これらはセキュリティの基本原則として広く推奨されています。

FAQ

Q: バインド機構はどのようにSQLインジェクションを防ぐのですか?
A: SQL文とパラメータを分離し、パラメータを単なるデータとして扱うため、悪意あるSQLコードが実行されません。
Q: なぜアクセス権限を最小限にすることが重要ですか?
A: 攻撃が成功しても、権限が限定されていれば被害範囲が狭まり、重要データの漏洩や改ざんを防げます。
Q: SSLはSQLインジェクション対策になりますか?
A: いいえ。SSLは通信の暗号化により盗聴を防ぎますが、SQL文の改ざんを防ぐものではありません。

関連キーワード: SQLインジェクション, バインド機構, プリペアドステートメント, アクセス権限管理, 最小権限の原則, Webアプリケーションセキュリティ
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ