2026/04/02
SQLインジェクション(SQL Injection)
概要
アプリケーションの入力フォーム等に不正なSQL文を注入(インジェクション)することで、データベースを不正に操作する攻撃
- 影響
- 顧客情報の漏洩、データの改ざん・消去、管理者権限の奪取など
- 攻撃例
- ログインフォームのID欄に
' OR '1'='1と入力し、パスワード検証を無視してログインする
- ログインフォームのID欄に
対策
- プレースホルダ(静的プレースホルダ)の利用
- SQL文の雛形を先に作成し、後から値を安全に流し込む(バインド)
- 入力値のバリデーション
- 期待されるデータ型(数値など)以外の入力は受け付けない
XSS(クロスサイト・スクリプティング)
概要
攻撃者が用意した悪意のあるスクリプトを、標的となるサイトのページ内に埋め込み、それを閲覧したユーザーのブラウザ上で実行させる攻撃
→閲覧者のブラウザで勝手にJavaScriptを実行させる
- 影響
- Cookie(セッションID)の窃取、偽の入力フォームによるフィッシング、不正なリダイレクトなど
- 種類
- 格納型(Stored)、反射型(Reflected)、DOM-based
- 攻撃例
- ユーザーが悪意あるスクリプトが埋め込まれたページを表示した瞬間、ブラウザがスクリプトを実行し、そのユーザーのログイン情報(Cookie)が攻撃者に送信
- 攻撃者は盗んだセッションIDを使って、そのユーザーになりすましてログイン(セッションハイジャック)
対策
- サニタイジング(出力時のエスケープ)
<や>などの記号を<>に置換し、プログラムとして実行させないようにする
HttpOnly属性の付与- JavaScript からの Cookie 読み取りを禁止し、セッション奪取を防ぐ
- https://developer.mozilla.org/ja/docs/Web/HTTP/Reference/Headers/Set-Cookie#httponly
- HTTP(S) リクエストには含める:サーバーとの通信(ページ遷移や API 呼出)には、今まで通りクッキーを自動送信
- JavaScript からのアクセスは拒否:
document.cookieを実行しても、Cookie を読み取らせない
CSRF(シーサーフ、クロスサイト・リクエスト・フォージェリ)
概要
ログイン済みのユーザーに対し、本人の意図しないリクエスト(パスワード変更や商品の購入など)を、攻撃対象のサイトへ強制的に送信させる攻撃
→ログイン済みのユーザーを標的とし、本来送るつもりのないリクエストを送信させる
- 影響
- 意図しない設定変更、勝手な投稿、退会処理の実行など
- 特徴
- ユーザー自身のブラウザから「正規のセッション」を用いてリクエストが送られるため、サーバー側で不正な操作かどうかの判別が困難
対策
- CSRFトークンの発行
- フォーム送信ごとにランダムな文字列(トークン)を発行・照合し、外部からの不正なリクエストを拒否
SameSite属性の設定- Cookie に
SameSite=LaxまたはStrictを設定し、外部サイトからの遷移時に Cookie を送信させない - https://developer.mozilla.org/ja/docs/Web/HTTP/Reference/Headers/Set-Cookie#samesitesamesite-value
- Cookie に
OSコマンド注入(OS Command Injection)
概要
Web アプリケーションが OS コマンド(シェルコマンド)を呼び出す処理の不備を突き、攻撃者が任意のOSコマンドを実行する攻撃
- 影響
- サーバー内ファイルの不正閲覧・改ざん・削除、不正プログラムの実行、サーバーの乗っ取りなど
- 攻撃例
- メール送信機能などの入力欄に
; rm -rf /や| cat /etc/passwdなどの記号とコマンドを混ぜて送信する
- メール送信機能などの入力欄に
対策
- シェルを呼び出す関数の使用を避ける
- 可能な限り、言語固有のAPIやライブラリ(例)を使用
ディレクトリ・トラバーサル(Directory Traversal)
概要
ファイル名を指定して読み込むような機能において、パスを遡る記号(../ など)を悪用し、本来アクセスが許可されていないディレクトリのファイルを不正に閲覧・取得する攻撃
- 影響
- サーバー上の機密ファイル(設定ファイル、パスワードファイルなど)の漏洩など
- 攻撃例
- 画像表示のURL
?file=logo.pngを?file=../../../../etc/passwdのように書き換える
- 画像表示のURL
対策
- 直接パスやファイル名を指定させない
- ファイル名そのものではなく、「ファイルID(例:
123)」で受け取り、内部でパスに変換
- ファイル名そのものではなく、「ファイルID(例:
- ファイル名の検証
../や絶対パスを示す/を含まないか、ファイル名として妥当かをチェック
- ベースディレクトリの固定
- プログラム側で指定されたディレクトリの外にはアクセスできないように制御
SSRF(Server-Side Request Forgery)
概要
サーバーに対して、攻撃者が指定した任意のURLへリクエストを送信させる攻撃です
- 影響
- 通常は外部からアクセスできない「社内ネットワークのサーバー」や「クラウドのメタデータ(認証情報など)」への不正アクセスなど
- 攻撃例
- 外部の画像をURL指定で取得する機能に対し、クラウドのメタデータ取得 API を指定して認証情報を盗み取る
対策
- リクエスト先URLのホワイトリスト化
- 許可されたドメインやIPアドレス以外へのリクエストを拒否
- 内部IPアドレスへのアクセス禁止
127.0.0.1やプライベート IP 空間へのアクセスをプログラム側、あるいはネットワーク(Firewall 等)で遮断
まとめ
| 脆弱性 | 標的 | 主な被害 | 主な対策 |
|---|---|---|---|
| SQLインジェクション | データベース | 情報漏洩・改ざん | プレースホルダの利用 |
| XSS | ユーザーのブラウザ | セッション窃取 | 出力の表示時エスケープ |
| CSRF | Webサーバー | 意図しない操作実行 | CSRFトークンの利用 |
| OSコマンド注入 | サーバーOS | サーバーの完全な乗っ取り | シェル関数の回避 |
| ディレクトリ・トラバーサル | サーバー内ファイル | 機密ファイルの閲覧 | パス遡り記号(../)の排除 |
| SSRF | 内部ネットワーク等 | 認証情報の窃取・内部攻撃 | リクエスト先の制限 |