ホーム > 情報処理安全確保支援士試験 > 2010年 秋期
情報処理安全確保支援士試験 2010年 秋期 午前2 問08
SQLインジェクション攻撃を防ぐ方法はどれか。
ア:入力から、上位ディレクトリを指定する文字列 (../) を取り除く。
イ:入力中の文字がデータベースへの問合せや操作において特別な意味をもつ文字として解釈されないようにする。(正解)
ウ:入力に HTML タグが含まれていたら、解釈、実行できないほかの文字列に置き換える。
エ:入力の全体の長さが制限を超えていたときは受け付けない。
解説
SQLインジェクション攻撃を防ぐ方法はどれか【午前2 解説】
要点まとめ
- 結論:SQLインジェクションを防ぐには、入力中の文字がSQL文の構造に影響を与えないようにすることが重要です。
- 根拠:攻撃者は入力に特殊文字を混入させてSQL文を改変し、不正アクセスや情報漏洩を狙います。
- 差がつくポイント:単に入力の長さや特定文字列を除去するだけでなく、SQL文の構文として解釈されないようにエスケープやパラメータ化を行うことが必須です。
正解の理由
選択肢イは「入力中の文字がデータベースへの問合せや操作において特別な意味をもつ文字として解釈されないようにする」方法を示しています。これはSQLインジェクション対策の基本であり、プレースホルダーやエスケープ処理を用いて、ユーザー入力がSQL文の構造を壊さないようにすることを意味します。これにより、攻撃者が意図的にSQL文を改変することを防げます。
よくある誤解
SQLインジェクション対策は単に入力の長さ制限や特定文字の除去だけでは不十分です。HTMLタグの処理はXSS対策であり、SQLインジェクションとは別の問題です。
解法ステップ
- SQLインジェクションの仕組みを理解する(攻撃者が入力を使いSQL文を改変する)。
- 問題文の選択肢をSQLインジェクション防止の観点で評価する。
- 入力の文字がSQL文の構造に影響を与えない方法を選ぶ。
- エスケープやパラメータ化を示す選択肢を正解と判断する。
選択肢別の誤答解説
- ア: 「../」の除去はディレクトリトラバーサル攻撃対策であり、SQLインジェクションとは無関係です。
- イ: SQLインジェクション対策の基本であり正解です。
- ウ: HTMLタグの置換はクロスサイトスクリプティング(XSS)対策であり、SQLインジェクション防止には直接関係しません。
- エ: 入力長制限は基本的な入力検証ですが、SQLインジェクションの根本的な防止策にはなりません。
補足コラム
SQLインジェクション対策には主に「プリペアドステートメント(パラメータ化クエリ)」や「エスケープ処理」が用いられます。これにより、ユーザー入力がSQL文の構造を壊すことなく安全に扱えます。さらに、Webアプリケーションファイアウォール(WAF)も補助的に利用されます。
FAQ
Q: SQLインジェクションとXSSは同じ攻撃ですか?
A: いいえ。SQLインジェクションはデータベース操作の改変を狙う攻撃で、XSSはWebページ上でのスクリプト実行を狙う攻撃です。
A: いいえ。SQLインジェクションはデータベース操作の改変を狙う攻撃で、XSSはWebページ上でのスクリプト実行を狙う攻撃です。
Q: 入力の長さ制限はSQLインジェクション対策になりますか?
A: 部分的な対策にはなりますが、根本的な防止策ではありません。必ずエスケープやパラメータ化を行う必要があります。
A: 部分的な対策にはなりますが、根本的な防止策ではありません。必ずエスケープやパラメータ化を行う必要があります。
関連キーワード: SQLインジェクション, エスケープ処理, パラメータ化クエリ, セキュリティ対策, Webアプリケーションセキュリティ