攻撃と脅威
SQL インジェクション
別称: SQLi
定義
信頼できない入力から組み立てたクエリに攻撃者が制御する SQL 断片を埋め込み、データ窃取・改ざん・データベース全体の侵害につながる攻撃。
SQL インジェクション(SQLi)は、アプリケーションがユーザー入力をコードとデータの分離なく SQL 文に連結する場合に発生します。' OR 1=1-- や UNION SELECT などのペイロードを送ることで、攻撃者は認証回避、任意テーブルの読み取り、レコードの改ざんや削除、設定不備のデータベースではシステムコマンドの実行まで行えます。エラーベース、UNION ベース、論理ベース/時間ベースのブラインド、アウトオブバンドなどの亜種があり、OWASP Top 10 にも長年登場します。決定的な対策はバインド変数を用いたパラメータ化クエリ(プリペアドステートメント)であり、入力検証、最小権限の DB アカウント、堅牢な ORM、補助的な WAF を多層で組み合わせます。
例
- ログインフォームに username='admin'-- を入力するとパスワードなしで認証を突破できる。
- 検索エンドポイントで細工した UNION SELECT により password_hash 列を窃取する。
関連用語
NoSQL インジェクション
ドキュメント型・キーバリュー型・グラフ型データベースに対し、クエリオブジェクトに演算子や JavaScript を埋め込む注入攻撃。
Command Injection
Command Injection — definition coming soon.
Parameterized Query
Parameterized Query — definition coming soon.
Input Validation
Input Validation — definition coming soon.
OWASP Top 10
OWASP Top 10 — definition coming soon.
Web アプリケーションファイアウォール(WAF)
リバースプロキシ型のフィルタとして HTTP/HTTPS トラフィックを検査し、SQL インジェクションや XSS、ボットによる不正利用などの Web 攻撃をアプリ到達前に遮断する。