SQLインジェクションの本質的対策

選択問題 セキュリティ
SQL インジェクション攻撃に対する、最も本質的で有効な対策はどれか。

解説を見る
SQLインジェクションは、利用者入力がSQL文の一部(構文)として解釈されることが原因。プレースホルダ(プリペアドステートメント/バインド機構)を使えば、入力は必ず「値」として扱われSQL構文に混入しない。これが最も本質的な対策で、エスケープ処理は補助的手段にとどまる。
誤答の解説
B文字数制限は緩和策にすぎず、短い攻撃文字列は防げない。根本対策ではない。
C詳細なエラー表示はむしろ攻撃者に情報を与え、脆弱性を助長しうる。
DTLS は通信路の盗聴・改ざん対策であり、サーバ側のSQL構文混入は防げない。
ヒント

・原因は「入力がSQLの構文として解釈される」こと。値と構文を分離する仕組みを選ぶ。

関連する問題

← 基本情報の一覧へ