[PHP-users 24738] Re: http://www〜経由でinclude

UNO Shintaro uno @ venus.dti.ne.jp
2005年 2月 27日 (日) 16:09:13 JST


>やりたいことですが、サーバAにphpファイルを置いて、
>別のサーバおよびローカルコンピュータから
>サーバAにあるphpファイルをincludeして
>実行したいんです。
>
>ちなみにサーバAの設定は変更することができます。
>とりあえずセキュリティは別にして実行できることを
>確認してみたいです。
>  
>

「includeして実行」だけですと意味が不明確です。
たぶん、上鍵さんが指摘されている

> 念のため質問しておくと,これリモートの PHP のソースが取得できると考え
> ていませんか? その場合,それはできませんので,なぜできないのかというこ
> ととどうやって対策するかを考えてください.

> #相手のサーバーで PHP が有効になってないなら別ですが 


という話が理解できていないのではないかと思います。


サーバAにあるphpファイルを、"http://〜/test.php" というファイル名で
読むということは、もしサーバAのWebサーバでPHPが実行されるように
設定されているのならそこでtest.phpを実行した「実行結果」を読むことに
なります。たとえばtest.phpの内容が
<?php echo "hello\n" ?>
だった場合、include "http://〜/test.php" でサーバAから取得
されるのはWebサーバ経由でのスクリプト実行結果である
hello
です。スクリプト本体のソースである
<?php echo "hello\n" ?>
という内容が取得できるわけではありません。

もし、スクリプトの内容を取得して「別のサーバやローカルコンピュータ」
の上で実行したいのであれば、サーバA上に置いてあるtest.phpの
「実行結果」ではなく「ソースそのもの」を読み出せる必要があります。
つまり、サーバAのtest.phpにアクセスしたときにはPHPスクリプトを実行
するのではなくソースをそのまま出力するように設定する必要があります。

でもこの場合、たとえばWWWブラウザでそのtest.phpにアクセスすると
ソースがそのまま見えてしまうので、サーバAを公開領域に置いたりすると
ソース漏洩の危険が伴います。

-- 
UNO Shintaro, 宇野 信太郎  ( mailto:uno @ venus.dti.ne.jp )
http://www.venus.dti.ne.jp/~uno/  http://d.hatena.ne.jp/uno/
GnuPG Key fingerprint = E278 2406 1A24 F1FB 2DF8  1B1D 3DEA 984E 120B 5302




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