最終更新日:2026年6月4日
sg sg-security-measures web_security threat_vulnerability
まず結論
- Webアプリ攻撃は、「何を悪用する攻撃か」で分類すると判断しやすくなります。
- SG試験では、攻撃名を暗記するだけでなく、入力値・利用者操作・セッション・通信経路のどれが狙われているかを見抜くことが重要です。
- 特に、SQLインジェクション・XSS・CSRFは名前が似ていなくても、問題文では混同しやすい形で出ます。
全体像
Webアプリ攻撃は、利用者とWebサーバの間で行われる処理のすき間を狙います。
- 入力値を悪用して、サーバ側の処理を変える
- 利用者のブラウザで、意図しない処理を実行させる
- ログイン状態やセッション情報を悪用する
- 通信や画面表示を利用して、利用者をだます
つまり、問題文を読んだらまず 「サーバがだまされるのか、利用者がだまされるのか」 を確認します。
主要用語の整理
| 用語 | 判断基準 |
|---|---|
| SQLインジェクションとは?仕組みと対策をやさしく理解【SG試験】 | 入力値にSQL文を混ぜ、データベース処理を不正に実行する攻撃か |
| クロスサイトスクリプティングとは?スクリプト実行の仕組み【SG試験】 | Webページにスクリプトを埋め込み、利用者のブラウザで実行させる攻撃か |
| クロスサイトリクエストフォージェリとは?なりすまし操作の仕組み【SG試験】 | ログイン済み利用者に、意図しないリクエストを送らせる攻撃か |
| クリックジャッキングとは?見えない操作誘導の仕組み【SG試験】 | 見えない画面や重ねた画面で、利用者に意図しないクリックをさせる攻撃か |
| ディレクトリトラバーサルとは?不正ファイルアクセスの仕組みと対策【SG試験】 | ../ などで本来見られないファイルへアクセスする攻撃か |
| セッションハイジャックとは?ログイン乗っ取りの仕組みと対策【SG試験】 | セッションIDなどを盗み、ログイン状態を乗っ取る攻撃か |
| 中間者攻撃とは?通信を盗み見る仕組みと対策【SG試験】 | 通信経路の途中に入り、盗聴や改ざんを行う攻撃か |
| Man-in-the-Browserとは?ブラウザ内改ざん攻撃の仕組み【SG試験】 | 利用者のブラウザ内で通信内容や表示内容を改ざんする攻撃か |
OSコマンドインジェクションを即判定するキーワード
SG試験では、次の語が問題文に出たら OSコマンドインジェクション を最優先で疑います。
system()、exec()、popen()などの外部プログラム呼び出し関数- 「シェルスクリプトを実行」「実行形式ファイルを起動」
- 「サーバ上でコマンドが実行される」
ひっかけ回避の切り分け
- OSコマンドインジェクション:OSコマンド実行が主語
- SQLインジェクション:SQL文・DB操作が主語
- CSRF:ログイン済み利用者の操作悪用が主語
- セッションハイジャック:セッションID奪取が主語
迷ったら「最終的に何が実行されるか」を見ます。
OSコマンドなら、OSコマンドインジェクションです。
SG試験でのひっかけポイント
| 迷いやすい組合せ | 切り分けのポイント |
|---|---|
| SQLインジェクション vs XSS | SQLはサーバ側のDB処理を悪用。XSSは利用者ブラウザでスクリプトを実行 |
| XSS vs CSRF | XSSはスクリプト実行。CSRFはログイン済み利用者に不正リクエストを送らせる |
| CSRF vs セッションハイジャック | CSRFは本人の認証状態を利用。セッションハイジャックはセッション自体を奪う |
| クリックジャッキング vs フィッシング | クリックジャッキングは画面操作の誘導。フィッシングは偽サイトなどで情報入力を誘導 |
| 中間者攻撃 vs Man-in-the-Browser | 中間者攻撃は通信経路。Man-in-the-Browserは利用者端末内のブラウザ |
攻撃名と対策名の対応(正しい組合せ / 間違いやすい組合せ)
| 攻撃 | 有効な対策(例) | 間違いやすい対策(例) | 切り分けの一言 |
|---|---|---|---|
| SQLインジェクション | SQL文を直接連結せず、プレースホルダ(バインド変数)を使う | セッション管理だけで防ごうとする | SQLインジェクションは「DBへの命令混入」の対策を選ぶ |
| クロスサイトスクリプティング(XSS) | 出力時にエスケープする。必要に応じてCSPを併用する | 信頼できない外部コンテンツを無条件に取り込む | XSSは「ブラウザで不正スクリプト実行」を止める対策を選ぶ |
| クロスサイトリクエストフォージェリ(CSRF) | CSRFトークンを確認する。状態変更処理に推測しやすい要求だけを使わない | HTTPメソッドの選択だけで防ごうとする | CSRFは「ログイン済み利用者に意図しないリクエストを送らせる」攻撃を防ぐ |
| セッションハイジャック | 推測困難で利用者ごとに異なるセッションIDを使い、ログイン後に再発行する | 変化しない識別子を長期間使い続ける | セッションハイジャックは「ログイン状態の乗っ取り」を防ぐ対策を選ぶ |
| ディレクトリトラバーサル | ../ を悪用できないよう、ファイルパスを検証・制限する |
出力エスケープだけで対応しようとする | ディレクトリトラバーサルは「不正ファイル参照」を防ぐ対策を選ぶ |
| OSコマンドインジェクション | 外部入力をコマンド文字列に埋め込まない。安全なAPI利用や実行権限最小化を行う | セッションID管理だけで対応しようとする | OSコマンドインジェクションは「サーバでの不正コマンド実行」を防ぐ対策を選ぶ |
選択肢を切るときの順番
- 問題文の主語が「DB / ブラウザ / ファイル / セッション / OSコマンド」のどれかを先に特定する。
- 攻撃の主語と、対策の主語が一致している選択肢を残す。
- 「別攻撃には有効だが、今回の攻撃には無効」な選択肢を先に消す。
安全なWebアプリケーション問題での組合せトラップ
SG試験では、攻撃名と対策の組合せを入れ替えて出すことがあります。
-
SQLインジェクション + プレースホルダ → 正しい組合せ。入力値をSQL文の構造から分離します。
-
XSS + 信頼できない外部コンテンツの無条件取込み → 不適切。外部コンテンツを無条件に信頼する方向は対策ではありません。
-
CSRF + 推測しやすい単純なリクエストだけで状態変更する → 不適切。重要な状態変更を簡単なリクエストだけで実行できると、むしろ意図しない操作の危険が高まります。
-
セッションハイジャック + 変化しないセッション識別子 → 不適切。固定的なIDは推測・悪用されやすく、ログイン後のセッションID再発行などが必要です。
おすすめの学習順序
- SQLインジェクションとは?仕組みと対策をやさしく理解【SG試験】
- クロスサイトスクリプティングとは?スクリプト実行の仕組み【SG試験】
- クロスサイトリクエストフォージェリとは?なりすまし操作の仕組み【SG試験】
- セッションハイジャックとは?ログイン乗っ取りの仕組みと対策【SG試験】
- クリックジャッキングとは?見えない操作誘導の仕組み【SG試験】
- ディレクトリトラバーサルとは?不正ファイルアクセスの仕組みと対策【SG試験】
- 中間者攻撃とは?通信を盗み見る仕組みと対策【SG試験】
記事一覧
入力値を悪用する攻撃
利用者のブラウザや操作を悪用する攻撃
- クロスサイトスクリプティングとは?スクリプト実行の仕組み【SG試験】
- クロスサイトリクエストフォージェリとは?なりすまし操作の仕組み【SG試験】
- クリックジャッキングとは?見えない操作誘導の仕組み【SG試験】
認証状態や通信を悪用する攻撃
- セッションハイジャックとは?ログイン乗っ取りの仕組みと対策【SG試験】
- 中間者攻撃とは?通信を盗み見る仕組みと対策【SG試験】
- Man-in-the-Browserとは?ブラウザ内改ざん攻撃の仕組み【SG試験】
まとめ(試験直前用)
- SQLインジェクションは、入力値でDB処理を悪用する。
- XSSは、利用者のブラウザでスクリプトを実行させる。
- CSRFは、ログイン済み利用者に不正なリクエストを送らせる。
- セッションハイジャックは、ログイン状態そのものを乗っ取る。
- 迷ったら「サーバ・ブラウザ・セッション・通信経路」のどれが狙われたかで切る。