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

Misha misha @ mbm.nifty.com
2003年 10月 20日 (月) 22:14:11 JST


こんにちは。ミーシャです。


うーん、ここまで議論が展開されると、
さすがに当事者はほっかむり、というわけにも行きませんね(苦笑)。

私も数多くの優れたテンプレートはよく使わせてもらっています。
ただ、Setoさんが例に挙げられたような、ちょっとした処理の場合、
わざわざ大掛かりなテンプレートライブラリを使うまでもなく、
自力で(前に投稿したとおり、eval()ではなく、地味なパタンマッチングですが)処理をするだけです。

具体的には、外部から送られてきたデータを評価するのではなく、
予め作り置いた「テキストファイル」をパースしてWebページとして表示する際、
変数として扱わなければならない部分に適用する、というものです。
自力のパタンマッチングであれば、別にそれが"$foo"でなくとも、2バイト文字列 "%foo" であっても構わないのですが、
しかし、ここで、$foo をそのままPHPの変数として素直に評価できれば、これは確かに「楽なこと」です。

したがって、重松さんや冨田さんのご指摘にあるような、
クロスサイトスクリプティング等の攻撃を受ける危険性とは(ほぼ)無縁ですし、
加えて、評価対象となるテキストファイルは、サーバの設定によって外部からのアクセスを拒否するなり、
そもそも DocumentRoot の外に出すなりして、変数自体も晒さない、といった防御は施しています。


ここで一つ感ずるのは、「使えること」と「使うことによる危険性」は、先ず切り離した上で、
(ケースに応じ)双方について論ずるべきではないか?ということです。
先の DAI さんのご質問は、あくまで「方法」であり、
外部とのインターフェイスに関しては、一言も触れられてはいません。
(喩えは妙ですが、「フォーム上からSQL文を直に入力できるようにしたい」という質問があれば、
「それはSQLインジェクションを受ける危険性が高いので止めたほうがいい」と、多くの方が助言するでしょうが、
「SQL文を外部ファイルにしたい」というだけの質問に対して、SQLインジェクション云々は行き過ぎかと思われます)。

もっとも、そうは言っても、今回の私の投稿については、その「危険性」を示唆しなかった、という点で、
片手落ちであった、という非は認めるところですが・・・。
その点、
 > eval したらどうか、という人は、それがどれほど危険なのかも
 > ちゃんと説明した方がいいと思うんですけどね。
eval() に限らず、いかなる方法であろうと、上のご批判は真摯に受け止めるところです。


> -----Original Message-----
> From: php-users-bounces @ php.gr.jp
> [mailto:php-users-bounces @ php.gr.jp] On Behalf Of Osamu Shigematsu
> Sent: Sunday, October 19, 2003 1:35 PM
> To: PHP-users ML
> Subject: [PHP-users 18512] Re: 変数に格納したヒアドキュメント(解
>
> 重松です。今さらですが。
>
> そういう意味不明なことをする間に、なぜ、既に開発され、
> 多くの人が使っているまともなテンプレートを使わないんでしょうか?
>
> eval したらどうか、という人は、それがどれほど危険なのかも
> ちゃんと説明した方がいいと思うんですけどね。
>
> で、私は、ヒアドキュメントのつづりは、here document だと思います。
>
> _______________________________________________
> PHP-users mailing list
> PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
>




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