IT用語
入力値にSQLの一部を紛れ込ませ、データベースへの命令を不正に書き換える攻撃。情報の漏えいや改ざんにつながる。
SQLインジェクションは、入力値をそのまま SQL 文に組み込んでいるアプリケーションに対して、攻撃者が入力欄や URL のパラメータに SQL の一部を紛れ込ませ、データベース への命令を不正に書き換える攻撃です。
仕組み
例えば、検索語を文字列の連結で SQL 文に組み込んでいると、入力に引用符や SQL の構文を含めることで、本来の条件を無効にしたり、別の命令を付け足したりできてしまいます。
起きる被害
- 会員情報などデータベースの内容の漏えい
- データの改ざん・削除
- ログイン認証の回避
- 環境によっては、サーバー上でのファイル操作やコマンドの実行
対策
- プレースホルダ(プリペアドステートメント)を使い、入力値を SQL の構文として解釈させない。WordPress では $wpdb->prepare() を使う
- データベースのアカウントに必要最小限の権限だけを与える(最小権限)
- エラーメッセージに SQL やテーブルの情報を出さない
- WAF は補助的な対策として使う(アプリケーションの修正の代わりにはならない)







