[PHP-users 12983] Re: HMTML Tag の回避策 (Re: PHP-users 保存書庫の文字化け)

しょうなり [ml] php-users@php.gr.jp
Tue, 04 Feb 2003 15:33:20 +0900


しょうなりです。

S.Okazaki さんは書きました:
>function sanitize($str) {
>    $str=ereg_replace("\&","&amp",$str);
>    $str=ereg_replace("\<","&lt",$str);
>    $str=ereg_replace("\>","&gt",$str);
>    $str=ereg_replace("\"","&quot",$str);
>    return $str;
>}
>私はこれだけしか対処していません。
>出力する文章は、必ずこの関数を通して出力しています。
>これで十分だと自分では思っているのですが、何かまずい
>所はあるでしょうか?

いろいろ条件が必要ですが、こういう場合はどうでしょうか?

<input type=text name=key value=<?= sanitize($_GET["key"]) ?>>
という風に、それぞれの値を " でくくらない書き方をする人の場合、
$_GET["key"] に
hoge onFocus=while(1){}
という値を渡されると、まずいことになるでしょう。

これが起きるには条件が厳しいとは思いますが、
フリーのPerlスクリプトを見てると、こういう書き方をよく目にしましたので…。


-- 
print <<<SIGNATURE
	しょうなり@信州 肥田昌也
	Email:     shounari@webappli.jp
	HomePage:  http://www.webappli.jp/ => JSlayout 評価版
SIGNATURE;