0

allow_url_include1 つの URL からのインクルードを許可する方法はありますか。多分HtaccessまたはPHPで?

4

2 に答える 2

1

いいえ。URL のコンテンツを取得するには、 を使用しますfile_get_contents()。次に、結果を待機中のブラウザーに送り返すには、単にecho().

$contents = file_get_contents('http://www.example.com/');
echo( $contents );

上記では、config を設定する必要がありますallow_url_fopen=1(これはデフォルトで既に設定されています)。


上で示したアプローチの代わりにを使用する場合include、大きな違いが 1 つあります。フェッチされたドキュメント内で見つかった PHP コードinclude実行します。一般に、これは、含まれるドキュメントの内容を 100% コントロールできることがわかっていない限り、許可するのは非常に危険です。

つまり、 とまったく同じように機能するコードinclude必要な場合は、次のようにすることができます (単一の URL を取得するだけで、を有効にする必要がないallow_url_includeため、より安全です)。

$contents = file_get_contents('http://www.example.com/');
eval('?>'.$contents);

これを選択する場合は、リモート URL の完全なコンテンツを制御していることを確認してください。他の誰かがそのファイルを制御すると、サーバー上で任意のコードを実行できるようになります。それが起こらないようにしてください。

于 2012-09-05T04:23:48.497 に答える
0

なぜそれが必要なのか、コードを制御できます。インクルード中に 1 つの URL を使用するだけです。allow_url_include を使用する以外に、非常に危険です。それでも使いたい場合は、この方法で行うことができます。

カスタム関数を作る(ラフコード)

function url_include($url){
   //now check if $url is the one you want to be included
   if($url=="http://www.mysite.com/file.php"){
     include($url);
   }else{
      //show error or something.
   }
}

これurl_include("http://www.mysite.com/file.php");をページで使用して、URL を含めます。

お役に立てれば

于 2012-09-05T03:50:42.680 に答える