Skip to the content.

まず結論

  • SQLインジェクションとは、入力値にSQL文を混入させてデータベースを不正操作する攻撃です。
  • SG試験では「入力値をそのまま使っているかどうか」を見抜けるかがポイントです。

直感的な説明

SQLインジェクションは「注文にこっそり命令を混ぜる」イメージです。

たとえば、ログイン画面で
「ユーザー名」を入力するはずなのに、

’’’ ‘OR ‘1’=’1 ‘’’

のような不正な文字列を入れると、
システムがそれをSQL文として解釈してしまい、
本来ありえない動き(認証突破など)が起きます。

👉 本来は「値」なのに「命令」として扱われてしまうのが問題です。


定義・仕組み

SQLインジェクションとは、

入力フォームなどにSQL文の一部を埋め込み、
データベースに対して意図しない操作を実行させる攻撃

です。

典型的な原因:

  • 入力値をそのままSQLに連結している
  • 入力チェック(バリデーション)が不十分

基本的な流れ:

  1. ユーザーが入力欄に悪意ある文字列を入力
  2. そのままSQL文に組み込まれる
  3. データベースがそれを実行してしまう

結果として:

  • 認証回避
  • データの漏えい
  • データの改ざん

などが発生します。


どんな場面で使う?

攻撃されやすい場面

  • ログイン画面
  • 検索フォーム
  • 問い合わせフォーム

👉 「ユーザー入力をDBに渡す処理」はすべて対象です。


対策が必要な場面

  • Webアプリケーション全般
  • 外部入力を扱うシステム

👉 SG試験では
「入力値の扱い」が問われることが多いです。


よくある誤解・混同

❌ よくある誤解

  • 「通信を盗み見る攻撃」
  • 「プログラムを制限する仕組み」

⭕ 正しい理解

  • 入力値を悪用してデータベースを操作する攻撃

SG試験でのひっかけ

SG試験では次のように混同させてきます。

  • 「通信内容を検知して遮断」
     → WAF
  • 「実行環境を制限する」
     → サンドボックス
  • 「入力値を悪用してDB操作」
     → SQLインジェクション(これが正解)

👉 選択肢では
SQL文の中に不正な入力を埋め込む」と書かれていたらSQLインジェクションです。


確認問題(SG試験対策)

次のうち、SQLインジェクション対策として最も適切なものはどれか。

A. 入力値をSQL文へ直接連結せず、プレースホルダなどで安全に扱う。 B. 利用者全員に管理者権限を与え、エラーを減らす。 C. データベースのパスワードを画面に表示して確認しやすくする。 D. 入力値の検査をやめ、SQLエラーの詳細を利用者へ表示する。

▶ クリックして答えと解説を見る(ここを開く)

正解:A

解説

  • A:SQL文の構造として解釈されないように扱うことが重要です。
  • B:権限過剰で被害が大きくなります。
  • C:認証情報の漏えいにつながります。
  • D:攻撃の手掛かりを与え、危険です。

👉 判断ポイント SQLインジェクションは「入力値がSQL文として実行される」ことを防ぐ。


まとめ(試験直前用)

  • SQLインジェクション=入力値を使ったDB不正操作攻撃
  • 原因は「入力値をそのままSQLに使うこと」
  • 対策は
    → プレースホルダ(バインド変数)
    → 入力チェック
  • SG試験では
    → 「入力値の扱い」に注目して判断する

🔗 関連記事


🏠 情報セキュリティマネジメントトップに戻る