コンテンツへスキップ
uencoder

SQL Injection

SQL インジェクションは、攻撃者が悪意のある SQL 断片をクエリ文字列に継ぎ足し、データベースに意図しないコマンドを実行させる攻撃である。

目的

入力を通じた SQL クエリの改ざんを防ぎ、データベースの窃取や改変を防ぐ。

メカニズム

ユーザー入力が SQL 文字列に直接連結される場合(例:"SELECT * WHERE name='"+input+"'")、' OR 1=1 -- の入力で条件を回避できる。防御策はパラメータ化クエリ(プリペアドステートメント)、ORM、入力バリデーション、最小権限アカウントである。

ユースケース

  • ログイン回避(' OR 1=1)
  • データ漏えい(UNION SELECT)
  • データ改ざん(UPDATE/DELETE)
  • コマンド実行(xp_cmdshell)

例

  • 入力
    admin' --
    Output
    Bypasses password verification

    Comments out the password condition

よくあるエラー

Building SQL with string concatenation
Always use parameterized queries

関連用語

関連ツール

References