[PHP-users 18522]Re: 変数に格納したヒアドキュメント(解

Shuhei Tomita tomita @ zingy.or.jp
2003年 10月 20日 (月) 14:05:22 JST


On Sun, 19 Oct 2003 13:34:35 +0900
Osamu Shigematsu <shige @ ravi.ne.jp> wrote:

冨田です。今さらに同意です。

> 重松です。今さらですが。
> 
> そういう意味不明なことをする間に、なぜ、既に開発され、
> 多くの人が使っているまともなテンプレートを使わないんでしょうか?
> 
> eval したらどうか、という人は、それがどれほど危険なのかも
> ちゃんと説明した方がいいと思うんですけどね。

たとえば、こんなテンプレート展開処理を用意してみました。

<?
//$_GET['key'] = stripslashes($_GET['key']);
//magic_quote_gpcがonの場合は上の行をアンコメント
$template = <<<HTML
入力文字列は {$_GET['key']} です
HTML;
?>
<html>
    <body>
        <?eval('echo "$template";') ?>
    </body>
</html>

ここに、$_GET['key']に、
'.exit().'
が入力されていると何が起きるのでしょうか。exit()の代わりに、
system(something..)が入力されていると何が起きるのでしょうか。私は恐ろし
くて口に出す事さえできません。興味のある方は是非各自のテスト環境でお試し
ください。

#"超"古典的セキュリティホールの一例です。
#[PHP-users 18514]にもうなづけます。

注意:上記のコードを公開されたWebサーバにおいてはいけません。

………………………………………………………………………………………………
		冨田 修平(Shuhei Tomita) tomita @ zingy.or.jp
………………………………………………………………………………………………



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