応用情報技術者 セキュリティ

SQLインジェクション攻撃の対策として最も有効なものはどれか?

1. プリペアドステートメント(バインド変数)の使用 ✓ 正解
2. パスワードの複雑化
3. ファイアウォールの設置
4. SSLの導入

📝 解説

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

フラッシュカード形式で セキュリティ を練習する

🎴 練習する

セキュリティ の問題一覧・解説を見る →