なぜPHPアプリにセキュリティホールが多いのか?
第19回 文字エンコーディングとセキュリティ(1)
文字エンコーディングを正しく,
今回から4回に分けて,
文字エンコーディングは厳格に扱わなければならない
問題の解説を始める前ですが,
- 文字エンコーディング取り扱いの原則
- 文字エンコーディングは厳格に取り扱い,
不正な文字エンコーディングを検出した場合, 致命的なエラーとして処理しなければならない
これから解説する文字エンコーディング関連の脆弱性は,
文字エンコーディングを利用した攻撃の認知
筆者の知る限り,
CA-2000-02の
- Solutions for Web Page Developers and Web Site Administrators (Webページ開発者とWebサイト管理者の対策)
の中で
In addition, web pages should explicitly set a character set to an appropriate value in all dynamically generated pages.
(それに加えて,
全ての動的に生成されたWebページは明示的に適切な文字コードセットを設定しなければならない)
としています。
文字エンコーディングを利用した攻撃にはさまざまな種類がありますが,
- 参考:CA-2000-02
文字エンコーディングを利用した攻撃の種類
US-CERTのCA-2000-02を見ると,
文字エンコーディングを利用した攻撃対象にはさまざまなバリエーションがあります。
- SQLインジェクション
- XPathインジェクション
- JavaScriptインジェクション
- HTMLインジェクション
- XMLインジェクション
JavaScript,
原理は同じで対策もほぼ同じと書きましたが,
- パス遷移攻撃 (ディレクトリトラバーサル)
文字エンコーディングを利用したこの脆弱性の攻撃は,
まとめ
どのように攻撃されるのかは紹介しませんでしたが,
この記事に関連する書籍
-
Webアプリセキュリティ対策入門〜あなたのサイトは大丈夫?
本書は,Webサイトのセキュリティ確保のために必要な基礎知識と,安全なコードを書くために必要な基礎知識を解説しています。Webアプリケーションは比較的簡単に作成で...
-
はじめてのPHP言語プログラミング入門
Webアプリケーション構築ツールとしてPHPを取り上げた書籍は数多くありますが,言語の解説・入門書としての書籍はあまりありません。 本書は,プログラミング言語として...
バックナンバー
なぜPHPアプリにセキュリティホールが多いのか?
- 第46回 セキュリティ対策を考える上で欠かせないコンテクスト
- 第45回 入力バリデーションはセキュリティ対策
- 第44回 セキュリティ対策が確実に実施されない2つの理由
- 第43回 PHP 5.3のcrypt関数の問題
- 第42回 PostgreSQL 9.0に見るSQLインジェクション対策
- 第41回 PHP 5.3.4におけるセキュリティ上重要な仕様変更
- 第40回 MOPS:安全性の高いパスワードハッシュ作成ツール - phpass
- 第39回 MOPS:静的PHPソースコード脆弱性スキャナ RIPS
- 第38回 MOPS:PHPにおけるコード実行(2)
- 第37回 MOPS:PHPにおけるコード実行(1)