Web インジェクションについて調べてみました。
Webインジェクションとは
Webインジェクション(Web Injection)は、悪意のあるデータをWebアプリケーションに注入し、意図しない動作を引き起こす攻撃手法の総称です。特にユーザー入力を適切に検証・エスケープしていないアプリケーションが標的になりやすく、データベースやシステムを不正に操作される可能性があります。
代表的な Web インジェクション攻撃の種類
SQL インジェクション(SQL Injection)
データベースとやり取りするWebアプリケーションの脆弱性を利用し、不正なSQLクエリを実行する攻撃です。
例
ユーザー認証を回避する攻撃
' OR '1'='1'; --
ユーザー情報を閲覧する攻撃
SELECT * FROM users WHERE username = 'admin' AND password = '' OR '1'='1';
対策
- プリペアドステートメント
- ORM(Object-Relational Mapping)の活用
- WAF(Web Application Firewall)の導入
- 入力値の適切なバリデーション
クロスサイトスクリプティング(XSS, Cross-Site Scripting)
JavaScript などのスクリプトを Web ページに埋め込み、ユーザーのブラウザで実行させる攻撃です。
例
フォームの入力欄に悪意のあるスクリプトを埋め込む。
<script>alert('Hacked!');</script>
対策
- 入力データのエスケープ処理(HTML エンコード)
- Content Security Policy(CSP)の導入
- HTTPOnly 属性をつけたクッキーの使用
コマンドインジェクション(Command Injection)
OS コマンドを不正に実行させる攻撃です。
例
フォームに以下のような入力をしてシステムを操作します。
; rm -rf /
シェルコマンドを不正に実行させる攻撃です。
curl "http://example.com?param=; rm -rf /"
対策
- 外部コマンドの使用を制限する
- ユーザー入力を厳格にバリデーションする
- 最小権限の原則に基づいたシステム設計
HTTPヘッダーインジェクション(HTTP Header Injection)
HTTPレスポンスヘッダーを改ざんし、リダイレクトや不正なレスポンスを返す攻撃です。
例
フィッシングサイトへ誘導される可能性がある。
HTTP/1.1 200 OK Content-Type: text/html Set-Cookie: session=xyz; Path=/; HttpOnly Location: http://malicious-site.com
対策
- ヘッダー値を適切にエスケープ
- レスポンスを固定化する
- リダイレクト時のURLをホワイトリスト化
Webインジェクション対策の基本
- 入力データのバリデーション
- 数値のみ許可
- 特定の文字列のみ受け付ける
- エスケープ処理
- HTML, SQL, シェルコマンドなどに適切なエスケープを適用
- 最小権限の原則
- アプリケーションに必要な最小限の権限だけを付与
- WAF(Web Application Firewall)の導入
- 既知の攻撃パターンを検出しブロック
- 定期的なセキュリティ診断
- OWASP ZAP、Burp Suiteなどのツールを活用して脆弱性診断を行う