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

ア:
イ:
ウ:
エ:(正解)
解説
SQLインジェクション対策について【午前2 解説】
要点まとめ
- 結論:SQLインジェクション対策には、プレースホルダの利用とデータベースアクセス権限の最小化が最も効果的です。
- 根拠:プレースホルダはSQL文とパラメータを分離し、不正なSQL挿入を防止します。アクセス権限の最小化は被害拡大を防ぎます。
- 差がつくポイント:単なる通信暗号化やファイル配置の工夫ではなく、SQL文の構造自体を安全に保つ実装技術と権限管理の組み合わせが重要です。
正解の理由
選択肢エは、Webアプリケーションプログラムの実装における対策として「プレースホルダを利用する」こと、実装以外の対策として「データベースのアクセス権限を必要最小限にする」ことを挙げています。
プレースホルダはSQL文の構造を固定し、ユーザ入力をパラメータとして扱うため、SQLインジェクション攻撃を根本的に防止します。
また、アクセス権限を最小限にすることで、万が一攻撃が成功しても被害範囲を限定できるため、実装以外の重要な防御策となります。
この組み合わせはSQLインジェクション対策の基本かつ効果的な方法として広く推奨されています。
プレースホルダはSQL文の構造を固定し、ユーザ入力をパラメータとして扱うため、SQLインジェクション攻撃を根本的に防止します。
また、アクセス権限を最小限にすることで、万が一攻撃が成功しても被害範囲を限定できるため、実装以外の重要な防御策となります。
この組み合わせはSQLインジェクション対策の基本かつ効果的な方法として広く推奨されています。
よくある誤解
SQLインジェクション対策は通信の暗号化やファイルの配置だけで十分と誤解されがちですが、これらは補助的な対策であり、根本的な防御にはなりません。
解法ステップ
- SQLインジェクションの攻撃手法を理解する(ユーザ入力がSQL文に直接組み込まれる危険性)。
- 実装における対策として、SQL文とパラメータを分離するプレースホルダの利用を確認。
- 実装以外の対策として、データベースのアクセス権限を最小限に設定する重要性を把握。
- 他の選択肢の対策がSQLインジェクション防止に直接関係しないことを見極める。
- 最も効果的な組み合わせを選択肢から選ぶ。
選択肢別の誤答解説
- ア:シェル起動禁止やchroot環境はセキュリティ向上に役立つが、SQLインジェクション対策としては直接的ではありません。
- イ:セッションIDの乱数生成やTLS通信は認証や通信の安全性向上策であり、SQLインジェクション防止策ではありません。
- ウ:パス名やファイル名のパラメータ受け取り制限やファイルの公開領域管理はファイル操作の安全策であり、SQLインジェクション対策とは異なります。
- エ:プレースホルダ利用とアクセス権限最小化はSQLインジェクション対策の基本であり、正解です。
補足コラム
SQLインジェクションは、ユーザ入力を適切に処理しないことで発生する代表的なWebアプリケーションの脆弱性です。プレースホルダ(パラメータ化クエリ)は、SQL文の構造を固定し、入力値を安全に扱うための標準的な手法です。さらに、データベースのアクセス権限を必要最小限に制限することで、万が一の侵入時の被害を抑制できます。これらはOWASP(Open Web Application Security Project)でも推奨されるベストプラクティスです。
FAQ
Q: プレースホルダはどのようにSQLインジェクションを防ぐのですか?
A: プレースホルダはSQL文の構造とパラメータを分離し、ユーザ入力を文字列として扱うため、不正なSQLコードの挿入を防止します。
A: プレースホルダはSQL文の構造とパラメータを分離し、ユーザ入力を文字列として扱うため、不正なSQLコードの挿入を防止します。
Q: なぜアクセス権限の最小化が重要なのですか?
A: 攻撃者が侵入しても、権限が限定されていれば操作できる範囲が狭まり、被害の拡大を防げるからです。
A: 攻撃者が侵入しても、権限が限定されていれば操作できる範囲が狭まり、被害の拡大を防げるからです。
関連キーワード: SQLインジェクション, プレースホルダ, データベースアクセス権限, Webアプリケーションセキュリティ, パラメータ化クエリ