CyberGlossary

攻撃と脅威

SQL インジェクション

別称: SQLi

定義

信頼できない入力から組み立てたクエリに攻撃者が制御する SQL 断片を埋め込み、データ窃取・改ざん・データベース全体の侵害につながる攻撃。

SQL インジェクション(SQLi)は、アプリケーションがユーザー入力をコードとデータの分離なく SQL 文に連結する場合に発生します。' OR 1=1-- や UNION SELECT などのペイロードを送ることで、攻撃者は認証回避、任意テーブルの読み取り、レコードの改ざんや削除、設定不備のデータベースではシステムコマンドの実行まで行えます。エラーベース、UNION ベース、論理ベース/時間ベースのブラインド、アウトオブバンドなどの亜種があり、OWASP Top 10 にも長年登場します。決定的な対策はバインド変数を用いたパラメータ化クエリ(プリペアドステートメント)であり、入力検証、最小権限の DB アカウント、堅牢な ORM、補助的な WAF を多層で組み合わせます。

  • ログインフォームに username='admin'-- を入力するとパスワードなしで認証を突破できる。
  • 検索エンドポイントで細工した UNION SELECT により password_hash 列を窃取する。

関連用語