Secure Steady
不正な SQL の実行 - SQL インジェクション の使い方・オプション・サンプル

不正な SQL の実行 - SQL インジェクション

ユーザー入力を通じて不正な SQL 文を実行させる攻撃。データの漏洩・改ざん・削除が可能になる。

概念図

SQL インジェクション diagram

攻撃シナリオ

認証バイパスの例

bash
SELECT * FROM users WHERE id = '1' OR '1'='1'

テーブル削除の例

bash
'; DROP TABLE users; --

SQL インジェクションの仕組み

アプリケーションがユーザー入力を直接 SQL 文に埋め込む場合、攻撃者は入力値に SQL の構文を含めることで、意図しないクエリを実行させることができます。

例えば、ログインフォームで ' OR '1'='1 と入力すると、WHERE 句が常に真になり認証をバイパスできる可能性があります。

対策

  • プリペアドステートメント(パラメータ化クエリ): SQL とデータを分離する。最も効果的な対策
  • ORM の使用: SQL を直接書かない
  • 入力値の検証: 型チェックやホワイトリスト
  • 最小権限の原則: DB ユーザーの権限を必要最小限にする
  • WAF(Web Application Firewall): 既知の攻撃パターンをブロック

関連トピック