大垣さんの書かれた: 不正な文字エンコーディングを利用した攻撃は、文字エンコーディングを厳格に取り扱い、文字エンコーディングをバリデーションすれば無くなります。これを怠ると、システムのどこで問題が発生するか予想できなくなります。つまり、いい加減に文字エンコーディングを取り扱うと安全なシステムは作れないのです。 何故かあたり前にならない文字エンコーディングバリデーション – yohgaki's blog という警告には同意なのですが、対策の一番手に「全ての入力文字列の文字エンコーディングをバリデーションする」が挙げられているのに違和感を覚えます。入力時のバリデーションは、あくまで保険的な対策でしかないのではないでしょうか。 この文脈において、XSSが起きるのは、不正なバイト列や冗長なUTF-8表現がHTML中に出力されるためでしょう。そうならば、不正な文字列がHTMLに出力されそうになった段