SQLインジェクションとは
SQLインジェクション(SQL Injection)とは、Webアプリケーションのデータベース操作に使われるSQL文に悪意あるコードを挿入し、不正なデータ取得・改ざん・削除を行うサイバー攻撃です。OWASP Top 10に常にランクインする最も危険な脆弱性の一つです。
SQLインジェクションの仕組み
ログインフォームに「’ OR ‘1’=’1」のような文字列を入力することで、本来の認証ロジックを無効化するのが典型的な手口です。入力値を適切にエスケープ・バリデーションせずにSQL文に組み込むことで発生します。
被害の種類
顧客情報・パスワード・クレジットカード情報の漏洩、データの改ざん・削除、管理者権限の奪取、さらにはサーバー上のコマンド実行まで、甚大な被害をもたらします。
対策方法
①プリペアドステートメント(プレースホルダー)の使用、②入力値のバリデーション・エスケープ処理、③WAF(Webアプリケーションファイアウォール)の導入、④エラーメッセージに内部情報を表示しない設定が基本的な対策です。WordPressでは$wpdbクラスのprepare()メソッドを使うことで対策できます。