[PHP-users 13010] Re: HMTML Tag の回避策 (自己レス)

Reiji Matsumoto php-users@php.gr.jp
Wed, 5 Feb 2003 07:33:23 +0900


Matsumoto@Spと申します

> attributeでJavaScriptが実行できる事は良く知られていますが、
> どのブラウザのどのバージョンがどのattributeでJavaSriptが
> 実行できるか、と言う事を調べるのが面倒なのでだれも作っていない
> と思います。

実はつい数ヶ月前に作ってみました。SAXを利用して構文チェックしています。
ただしXHTMLは一般の人には文法が厳しすぎるため、SAXに通す前に<br>、
<img>等を<br />、<img ... />等に変換、<font color=#123456>等も
<font color="#123456">としています。

許可されたタグ、許可されたアトリビュートが利用されているか、そして
アトリビュートとして"Style"が指定された場合は許可されたプロパティ
が利用されているか、さらに値にexpression()が使われていないか…、
等をチェックしています。

phpで記述し、だいたい500ステップぐらいのプログラムです。ただし半分以上
は連想配列を利用してそれぞれのタグの性質を表現したデータベースであり、
コードそのものは200ステップぐらいです。
比較的負荷がかかるため、将来的にはC++等で記述しZend APIやCOMでラッパー
を作りたいと思っています。

この関数を利用した掲示板は私が運営するSOHOの事業の一環として、つい最近
試験運用を始めております。
実は作ったはいいけど、今後たったひとりでXSSと戦っていく事に多少なりとも
不安を感じていました。また日本発のオープンソースに貢献できるチャンスで
もあり、新参者ではございますが、よろしければ近日中にソースを公開させて
頂きたいと思っております。

少し整理しなくてはならないため、少々お待ち下さい。

Matsumoto@Sp