GLOSSA

SQLインジェクション

えすきゅーえるいんじぇくしょん

SQL Injection

一言でいうと

ユーザー入力に紛れさせたSQLコードを実行させ、DBから情報を抜く攻撃のこと。

詳しい意味

SQLインジェクションは、ユーザー入力をそのままSQL文に組み込んでしまう実装の不備を突いて、入力に紛れさせたSQLコードをDBに実行させる攻撃です。これにより、本来見えないはずの全ユーザー情報の流出、データの改ざん・削除、最悪の場合は管理者権限奪取まで起こり得ます。対策は基本「プレースホルダ(パラメータ化クエリ)の利用」「ORM の使用(Prisma などはデフォルトで安全)」「最小権限のDBユーザー」。文字列連結でSQLを組み立てるのは絶対に避ける、というのが鉄則です。

何に使うか

ユーザー入力を含むDB問い合わせを行う全ての箇所が対象。検索フォーム、ログイン処理、コメント保存などすべて対策が必要。

どんな時に出るか

「SQLインジェクション脆弱性」「文字列連結でSQLを組まない」「プレースホルダ必須」といった場面で登場します。

具体例

  • ORM(Prisma)を使っているのでSQLインジェクションは構造的に防げている。
  • SQLインジェクションの教科書事例: `' OR '1'='1` をログイン入力欄に入れる古典的攻撃。

別名・略称

sql injection(えすきゅーえるいんじぇくしょん)SQLi(えすきゅーえるあい)

関連語

SQLデータベース

初心者向けメモ

図書館で「探したい本のタイトルを書いてください」と渡された紙に「タイトル + 全部の本のリストください」と書き、司書が指示通り渡してしまう、という感じです。受け取った紙を「指示」として実行してしまう設計の脆さが原因です。

この説明に改善点はありますか?

この説明を修正提案する新しい用語を提案する

提案は管理者が確認した後に反映されます