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

Osamu Shigematsu php-users@php.gr.jp
Tue, 04 Feb 2003 14:38:42 +0900


重松です。

小山さんには釈迦に説法ではありますが。;)

>   '<' や '>' は、HTML エンティティを用いて '&lt;', '&gt;' に置き換える
> べきでしょう。そのために PHP には htmlspecialchars() 関数が用意されて
> います。

それ以外にも、JavaScript を紛れ込ませることもできますね。
方法によっては、htmlspecialchars() で防ぐことはできないと思います。

また、最近話題に上りましたが、\0 を送りつける攻撃法もありますし、
この場合、標準のままだと、\0 はどうも置き換えの対象ではないようです。

(PHP 4.3.0-CGI on Solaris 2.6)
echo '<?= htmlspecialchars("<>\0&\n"); ?>' | php -q | od -tx1
0000000 26 6c 74 3b 26 67 74 3b 00 26 61 6d 70 3b 0a
0000017

もちろん、SQL サーバにデータを格納する場合には、
SQL 文を混入されないように細心の注意を払う必要があります。

なので、htmlspecialchars() をかましたから、もう安心というように、
安直に考えない方がいいと思われます。>元の質問の方

-- 
Osamu Shigematsu <m5issige@mr.hitachi-medical.co.jp>