応用情報技術者
セキュリティ
SQLインジェクション攻撃の対策として最も有効なものはどれか?
1.
プリペアドステートメント(バインド変数)の使用
✓ 正解
2.
パスワードの複雑化
3.
ファイアウォールの設置
4.
SSLの導入
📝 解説
SQLインジェクションは「Webフォームなどの入力欄に悪意のあるSQL文を入力してデータベースを不正操作する攻撃」です。図書館の検索システムに例えると、検索窓に「本のタイトル; DROP TABLE books;」と入力したら本の検索と同時に本の一覧が全削除される、というイメージです。対策として最も有効なのはプリペアドステートメント(バインド変数)の使用です。通常はSQL文と入力値を一緒にデータベースに渡しますが、プリペアドステートメントではSQL文の構造を先にコンパイルし、入力値は後から「データ」として差し込みます。これにより入力値がSQL命令として解釈されることがなくなり、SQLインジェクションを根本的に防げます。パスワードの複雑化はパスワード攻撃対策で、SQLインジェクションには無関係です。ファイアウォールはネットワーク境界の防御で、SQLインジェクションのようなアプリ層の攻撃は防げません。SSLは通信の暗号化で攻撃内容は暗号化されたまま届きます。「SQLインジェクション対策の最善手=プリペアドステートメント」を確実に覚えましょう!