マルチバイト文字の先行文字埋め込みによるXSSへの保険的対策について


マルチバイト文字列の先行文字列埋め込みによる攻撃については、長谷川さんによる、http://gihyo.jp/admin/serial/01/charcode/0006
を参照いただくこととして、この記事に書かれていない、とりあえずの間に合わせ的な保険的対策について書いてみたいと思います。
なお、攻撃を「完全に防止できる」ということは証明できませんが、十分に難易度を高めることが可能であると思います。

処置は簡単です。「=」を、数値文字参照化してHTMLに出力するというものです。これにより、onイベント属性の追加が困難になることでしょう。HTMLの各属性をダブルクォート(など)で囲むことを徹底しておくほうがよいことはもちろんですが、時間がかかる場合にはとりあえず、この保険的対策をほどこしてからじっくりと腰を落として本来行うべき対策を行うとよいかもしれません。

※この手法はXSSが有名になりはじめたころから考えてはいたのですが、完璧ではないため、今日はじめて口外しました。