[PHP-users 18215]Re: HTMLタグをユーザーレベルで入力してもらう場合の書式チェック&トラブル予防策

sou sou_sk @ nifty.com
2003年 10月 2日 (木) 19:11:48 JST


こんばんは、城戸です。

具体的な実装は Pukiwiki や Xoops, slashcode のようなオープンソースのアプ
リケーションが色々とあると思うので参考にされてはいかがでしょうか。

> そうですね、私もこれがもっとも心配ですので、ここだけは強行策を取っていま
> す。
> 
> eregi_replace("script","",$str);
> eregi_replace("java","",$str);
> 
> 
> 普通に考えて「入力されてやって来る」ような代物ではありませんからね(笑)。

<a onMouseOver="document.write('hoge')">test</a>
とか色々あります。ブラウザの挙動が変わればルールも変わります。
許可->禁止 ではなく 禁止->許可 として確実なもの以外は全てエンティティに置換
するのはどうでしょう。
要素だけでなく属性チェックも見て特定パターン以外の属性記述を通さないよう
にすれば気にされているタグの閉じ忘れ対処にもなると思います。

もう 1 年以上利用している国内有数の大手サービスがあるのですが、まずタグ
の記述を許可し、次に禁止ルールを適用して危険な記述を拾い上げブロックしよ
うとしています。
ところが結局適切なルールが定義出来ず脆弱性が残っている割に色々と弊害も起
きており、経緯を眺めているとサニタイジングの考え方として 許可->禁止 では
なく 禁止->許可 の方が楽で確実に思えます。

-- 
sou <sou @ enzo.bz>
http://enzo.bz/



PHP-users メーリングリストの案内