筆者はここ数年、ブラウザからの入力は指定された通りの正しい文字エンコーディングでエンコードされているか検証しなければならない、と解説しています。手前味噌ですが2006年3月に出版した「Webアプリセキュリティ対策入門」(技術評論社)でも、入力文字列のエンコーディングが妥当であるか検証しなければならない、と解説しています。 残念なことに最近になっても不正な文字エンコーディングが入力される可能性を考慮していないことによる脆弱性が、PHP本体自体やPHPも利用しているライブラリlibxml2に発見されました。不正な文字エンコーディングはデータが正しくないだけでなく、スクリプトインジェクションやSQLインジェクション、DoS攻撃等を可能にします。 マルチバイト文字エンコーディングは最初または前方に配置されたバイトで1文字が何バイトで構成されるか決まります。この性質を利用してマルチバイト文字列の開