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

選択肢
ア:
イ:
ウ:
エ:(正解)
SQLインジェクション対策について【午前2 解説】
要点まとめ
- 結論:SQLインジェクション対策には、実装面でプレースホルダを使い、実装以外ではデータベース権限を最小限にすることが有効です。
- 根拠:プレースホルダはSQL文とデータを分離し、不正なSQL挿入を防止します。権限最小化は万が一の侵害時の被害拡大を防ぎます。
- 差がつくポイント:単なる通信暗号化やファイル配置の工夫ではなく、SQL文の構造を安全に保つ実装技術と権限管理の組み合わせが重要です。
正解の理由
選択肢「エ」は、Webアプリケーションの実装における対策として「プレースホルダを利用する」ことを挙げています。これはSQLインジェクションの根本的な防止策であり、ユーザ入力をSQL文に直接埋め込まず、パラメータとして扱うことで不正なSQL文の実行を防ぎます。
また、実装以外の対策として「データベースのアカウントがもつアクセス権限を必要最小限にする」ことは、万が一SQLインジェクションが成功しても被害範囲を限定できるため、セキュリティ強化に直結します。
この組み合わせはSQLインジェクション対策として最も効果的かつ実践的な方法です。
また、実装以外の対策として「データベースのアカウントがもつアクセス権限を必要最小限にする」ことは、万が一SQLインジェクションが成功しても被害範囲を限定できるため、セキュリティ強化に直結します。
この組み合わせはSQLインジェクション対策として最も効果的かつ実践的な方法です。
よくある誤解
SQLインジェクション対策は通信の暗号化やファイルの配置だけで十分と誤解されがちですが、これらは直接的な防御策ではありません。
また、セッションIDの乱数化は認証強化策であり、SQLインジェクション対策とは異なります。
また、セッションIDの乱数化は認証強化策であり、SQLインジェクション対策とは異なります。
解法ステップ
- SQLインジェクションの基本的な防御策を理解する(ユーザ入力の安全な扱い)。
- Webアプリケーションの実装面で有効な技術(プレースホルダの利用)を確認する。
- 実装以外の対策として、データベースのアクセス権限管理の重要性を把握する。
- 選択肢の内容を比較し、SQLインジェクション対策に直接関連するものを選ぶ。
- 「エ」が両面で適切な対策を示していることを確認し、正解とする。
選択肢別の誤答解説
- ア:Webアプリでシェルを起動しないことやchroot環境はサーバの安全性向上策ですが、SQLインジェクション対策としては不十分です。
- イ:セッションIDの乱数生成やTLS通信は認証や通信の安全性向上策であり、SQLインジェクションの直接対策ではありません。
- ウ:パス名やファイル名のパラメタ制限やファイルの公開領域管理はファイル操作の安全策であり、SQLインジェクション対策とは異なります。
- エ:プレースホルダ利用によるSQL文の安全化と、データベース権限の最小化はSQLインジェクション対策として最も適切です。
補足コラム
SQLインジェクションは、ユーザ入力を不正にSQL文に組み込む攻撃であり、Webアプリケーションの脆弱性の中でも特に危険度が高いものです。
プレースホルダ(パラメータ化クエリ)は、SQL文の構造とデータを分離し、攻撃者がSQL文を改変できないようにするための標準的な対策です。
また、データベースのアクセス権限を必要最小限に設定することは、万が一の侵害時に被害を限定する重要な防御層となります。
プレースホルダ(パラメータ化クエリ)は、SQL文の構造とデータを分離し、攻撃者がSQL文を改変できないようにするための標準的な対策です。
また、データベースのアクセス権限を必要最小限に設定することは、万が一の侵害時に被害を限定する重要な防御層となります。
FAQ
Q: プレースホルダを使うとSQLインジェクションは完全に防げますか?
A: ほぼ防げますが、他の脆弱性や設定ミスがないかも併せて確認する必要があります。
A: ほぼ防げますが、他の脆弱性や設定ミスがないかも併せて確認する必要があります。
Q: なぜデータベースの権限を最小限にする必要があるのですか?
A: 攻撃者が侵入しても操作できる範囲を限定し、被害拡大を防ぐためです。
A: 攻撃者が侵入しても操作できる範囲を限定し、被害拡大を防ぐためです。
Q: TLSはSQLインジェクション対策に役立ちますか?
A: TLSは通信の盗聴防止に有効ですが、SQLインジェクションの防止には直接関係しません。
A: TLSは通信の盗聴防止に有効ですが、SQLインジェクションの防止には直接関係しません。
関連キーワード: SQLインジェクション、プレースホルダ、データベース権限管理、Webアプリケーションセキュリティ、パラメータ化クエリ

\ せっかくなら /
情報処理安全確保支援士を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

