sg threat_vulnerability unauthorized_access database sg-security-overview
まず結論
- SQLインジェクションとは、入力値にSQL文を混入させてデータベースを不正操作する攻撃です。
- SG試験では「入力値をそのまま使っているかどうか」を見抜けるかがポイントです。
直感的な説明
SQLインジェクションは「注文にこっそり命令を混ぜる」イメージです。
たとえば、ログイン画面で
「ユーザー名」を入力するはずなのに、
’’’ ‘OR ‘1’=’1 ‘’’
のような不正な文字列を入れると、
システムがそれをSQL文として解釈してしまい、
本来ありえない動き(認証突破など)が起きます。
👉 本来は「値」なのに「命令」として扱われてしまうのが問題です。
定義・仕組み
SQLインジェクションとは、
入力フォームなどにSQL文の一部を埋め込み、
データベースに対して意図しない操作を実行させる攻撃
です。
典型的な原因:
- 入力値をそのままSQLに連結している
- 入力チェック(バリデーション)が不十分
基本的な流れ:
- ユーザーが入力欄に悪意ある文字列を入力
- そのままSQL文に組み込まれる
- データベースがそれを実行してしまう
結果として:
- 認証回避
- データの漏えい
- データの改ざん
などが発生します。
どんな場面で使う?
攻撃されやすい場面
- ログイン画面
- 検索フォーム
- 問い合わせフォーム
👉 「ユーザー入力を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試験では
→ 「入力値の扱い」に注目して判断する
🔗 関連記事
- 攻撃者の種類とは?目的と特徴で整理する【情報セキュリティマネジメント】
- 認証方式とは?3要素と多要素認証を整理【SG試験】
- ブラックリストとホワイトリストの違いとは?判断基準を整理【情報セキュリティマネジメント】
- ブロック暗号とストリーム暗号の違いとは?暗号方式を整理【SG試験】
- ボットとは?遠隔操作される仕組みを理解する【情報セキュリティマネジメント】