ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

Web インジェクションとは

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などのツールを活用して脆弱性診断を行う