← TOPにもどる
🔐 セキュリティ

SQLインジェクションとは?仕組みと対策をわかりやすく解説

ITパスポート試験対策|まなクエ!学習ガイド

SQLインジェクションセキュリティITパスポートWebセキュリティ

SQLインジェクションとは

SQLインジェクションとは、Webアプリケーションのデータベースに対して悪意のあるSQL文を埋め込む攻撃手法です。ログインフォームや検索フォームなど、ユーザーが入力できる箇所を悪用します。

💡 「injection(注入)」という名前の通り、不正なSQL命令をシステムに"注入"する攻撃です。

攻撃の仕組み

例えば、ログインフォームに以下のような入力をされた場合を考えます。

ユーザー名入力欄に: ' OR '1'='1 と入力

本来のSQL文: SELECT * FROM users WHERE username='入力値' が、SELECT * FROM users WHERE username='' OR '1'='1' に変化します。

'1'='1' は常に真なので、すべてのユーザー情報が取得されてしまいます。これによりパスワードなしでログインが可能になる場合があります。

被害の種類

対策方法

対策内容
プリペアドステートメントSQL文を事前にコンパイルし、入力値をデータとして扱う
エスケープ処理特殊文字('、"、;など)を無害化する
入力値の検証想定外の文字列を受け付けないようにする
WAF(Webアプリケーションファイアウォール)不正なリクエストを検知・ブロックする
最小権限の原則DBアカウントに必要最小限の権限のみ付与する
❌ よくある誤解:「パスワードをかけていれば安全」→ SQLインジェクションはログイン前でも発動します。入力値の検証が最重要です。

試験対策ポイント

SQLインジェクション対策の最も根本的な方法は「プリペアドステートメント(バインド機構)」です。試験でよく問われます。

実力を試してみよう!

この知識を使って実際の問題を解いてみましょう。

試験対策クイズに挑戦する