メインコンテンツへスキップ
EXBANK
用語集一覧へ
— Glossary

SQL インジェクションSQL Injection / SQLi

読み: エスキューエルインジェクション
短い定義

SQL インジェクションは、ユーザー入力をSQL文字列に連結することでデータベースに不正なクエリを実行させる攻撃で、対策はプリペアドステートメント (パラメータ化クエリ) です。

詳細解説

SQL インジェクション (SQLi) は、Webアプリがフォームやパラメータの入力値を SQL に直接連結することで、攻撃者が任意のSQLを差し込み、データ漏洩・改ざん・認証バイパス・OSコマンド実行に至る攻撃です。古典例は「' OR '1'='1」を入力欄に入れて WHERE 条件を真化するパターンや、UNION SELECT で他テーブルを抜くパターンです。対策はOWASPに従い (1) プリペアドステートメント / パラメータ化クエリの徹底 (2) ORM (Prisma / SQLAlchemy / ActiveRecord) の利用 (3) 最小権限原則のDBユーザー (4) WAFによる多層防御 (5) エラーメッセージの抽象化 が必須です。OWASP Top 10 では Injection カテゴリで何度も上位入りしてきた古典脅威です。Boolean-based / Time-based / Union-based / Error-based の手法分類があります。

実装例 / 使い方

  • 01?id=1' OR '1'='1 で全レコード取得を試みる古典攻撃
  • 02Prisma の prisma.user.findUnique({ where: { id }}) でパラメータ化
  • 03SQLi 検知のため WAF (Cloudflare / ModSecurity) を併用
IMPLEMENT

SQL インジェクションを、実際に活用する

用語の意味は分かった。次は実装。EXBANK の無料診断で、貴社で具体的にどう活用できるかをご提案します。

営業時間 平日10-18時 / 通常24時間以内に返信