情報処理安全確保支援士試験 2019年 秋期 午前217


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

解説

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

要点まとめ

  • 結論:SQLインジェクション対策には、プログラム実装でのプレースホルダ利用と、データベースアクセス権限の最小化が最も効果的です。
  • 根拠:プレースホルダはSQL文とデータを分離し、不正なSQL挿入を防止。アクセス権限の最小化は被害拡大を抑制します。
  • 差がつくポイント:単なる通信暗号化やファイル配置の工夫ではなく、SQL文の構造自体を安全に保つ実装技術と権限管理の理解が重要です。

正解の理由

SQLインジェクションは、ユーザ入力が直接SQL文に組み込まれることで発生します。
プログラム実装においては、プレースホルダ(パラメタライズドクエリ)を使うことで、SQL文とデータを明確に分離し、悪意ある入力がSQL文として解釈されるのを防ぎます。
また、実装以外の対策として、データベースのアカウントに必要最小限のアクセス権限を設定することで、万が一侵入されても被害範囲を限定できます。
これらの対策はSQLインジェクションの根本的な防止と被害軽減に直結するため、最も適切です。

よくある誤解

通信の暗号化やファイルの配置は重要ですが、SQLインジェクションの直接的な防止策ではありません。
また、セッションIDの管理は認証関連であり、SQLインジェクション対策とは異なります。

解法ステップ

  1. SQLインジェクションの仕組みを理解する(ユーザ入力がSQL文に直接組み込まれること)。
  2. プログラム実装での対策として、プレースホルダの利用が有効であることを確認。
  3. 実装以外の対策として、データベースのアクセス権限を必要最小限に設定する重要性を把握。
  4. 他の選択肢がSQLインジェクション対策として不適切である理由を検討。
  5. 最も適切な組み合わせを選択する。

選択肢別の誤答解説

  • ア:シェル起動禁止やchroot環境はサーバの安全性向上策であり、SQLインジェクション対策としては直接的でありません。
  • イ:セッションIDの乱数生成やTLSは認証や通信の安全性向上策であり、SQLインジェクション防止策ではありません。
  • ウ:パス名やファイル名のパラメタ制限や重要ファイルの非公開はファイル操作の安全策であり、SQLインジェクション対策とは異なります。
  • :プレースホルダ利用はSQL文の安全化、アクセス権限の最小化は被害軽減に直結し、SQLインジェクション対策として最適です。

補足コラム

プレースホルダは「パラメタライズドクエリ」とも呼ばれ、SQL文の構造を固定し、ユーザ入力をパラメータとして扱うことでSQLインジェクションを防ぎます。
また、データベースのアクセス権限は「最小権限の原則」に基づき、必要な操作だけを許可することで、万一の侵害時の被害を限定します。
これらはセキュリティの基本原則であり、他の攻撃手法にも応用可能です。

FAQ

Q: プレースホルダを使うとSQLインジェクションは完全に防げますか?
A: 基本的には防げますが、他の脆弱性や設定ミスがあるとリスクは残るため、総合的な対策が必要です。
Q: なぜ通信の暗号化(TLS)はSQLインジェクション対策にならないのですか?
A: TLSは通信経路の盗聴防止であり、SQL文の構造改変を防ぐものではないため、SQLインジェクション対策には直接関係しません。
Q: データベースのアクセス権限を最小限にする具体例は?
A: 例えば、読み取り専用のアカウントには更新や削除権限を与えないなど、必要な操作だけを許可します。

関連キーワード: SQLインジェクション, プレースホルダ, パラメタライズドクエリ, アクセス権限最小化, Webアプリケーションセキュリティ, データベースセキュリティ
← 前の問題へ次の問題へ →

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