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


SQLインジェクション対策について,Webアプリケーションの実装における対策とWebアプリケーションの実装以外の対策として,ともに適切なものはどれか。
Webアプリケーション中でシェルを起動しない。chroot環境でWebサーバを稼働させる。
セッションIDを乱数で生成する。TLSによって通信内容を秘匿する。
パス名やファイル名をパラメタとして重要なファイルを公開領域に置かないようにする。
プレースホルダを利用する。データベースのアカウントがもつデータベースアクセス権限を必要最小限にする。(正解)

解説

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

要点まとめ

  • 結論:SQLインジェクション対策には、実装面でプレースホルダの利用、運用面で最小権限の付与が有効です。
  • 根拠:プレースホルダはSQL文とデータを分離し、不正なSQL挿入を防止。最小権限は万が一の侵害時の被害拡大を抑制します。
  • 差がつくポイント:単なる通信暗号化やファイル配置の工夫ではなく、SQL文の構造を守る実装と権限管理の組み合わせが重要です。

正解の理由

選択肢「エ」は、Webアプリケーションの実装における対策として「プレースホルダを利用する」ことを挙げています。これはSQLインジェクションの根本的な防止策であり、ユーザ入力を安全にSQL文に組み込む方法です。また、実装以外の対策として「データベースのアカウントおよびアクセス権限を必要最小限にする」ことは、万が一SQLインジェクションが成功しても被害を最小限に抑えるための重要な運用上の対策です。これらの組み合わせがSQLインジェクション対策として最も適切です。

よくある誤解

SQLインジェクション対策は通信の暗号化やファイルの配置だけで十分と誤解されがちですが、これらは補助的な対策であり、根本的な防止にはなりません。

解法ステップ

  1. SQLインジェクションの特徴を理解する(ユーザ入力がSQL文に直接影響する攻撃)。
  2. 実装面での対策として、ユーザ入力を安全に扱う方法を探す(プレースホルダの利用が代表的)。
  3. 実装以外の対策として、被害を最小限に抑えるための権限管理を検討する。
  4. 選択肢の中でこれら両方を満たすものを選ぶ。

選択肢別の誤答解説

  • ア:シェル起動禁止やchrootはサーバの安全性向上策だが、SQLインジェクション対策としては直接的でない。
  • イ:セッションIDの乱数生成やTLSはセッション管理や通信の安全性向上策であり、SQLインジェクション対策ではない。
  • ウ:ファイル名のパラメタ制限や公開領域の管理はファイル操作の安全策であり、SQLインジェクションとは直接関係しない。
  • :プレースホルダ利用はSQL文の安全化、最小権限は被害抑制の両面からSQLインジェクション対策として最適。

補足コラム

SQLインジェクションは、ユーザ入力を適切に検証・処理しないことで発生する代表的なWebアプリケーションの脆弱性です。プレースホルダ(パラメタライズドクエリ)を使うことで、SQL文の構造とデータを分離し、攻撃を防ぎます。また、データベースの権限を必要最小限に設定することで、万が一攻撃が成功しても被害範囲を限定できます。これらはOWASPの推奨するベストプラクティスでもあります。

FAQ

Q: プレースホルダを使うとSQLインジェクションは完全に防げますか?
A: 基本的には防げますが、他の脆弱性や設定ミスがあるとリスクは残るため、総合的なセキュリティ対策が必要です。
Q: なぜデータベースの権限を最小限にする必要があるのですか?
A: 攻撃者が侵入した場合でも、権限が限定されていれば被害を限定的に抑えられるためです。

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

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