2

最近、php4からphp5にアップグレードしましたが、それに伴い、すべてのリモートphpファイルアクセスが機能しなくなったことがわかりました。私はこれについてかなりの調査を行ってきましたが、php5にリモートURLを含める正しい方法について明確な答えがないようです。

最初の例は、この方法でファイルを含めることです

<?php
   $data = file_get_contents("http://example.com/example.inc.php",0);
   echo $data;
?>

2つ目はこの方法です

<?php
   $ch = curl_init("http://example.com/example.inc.php");
   curl_exec($ch);
   curl_close($ch);
?>

そして3番目は私のphp.iniファイルに設定することです

allow_url_include = On      
allow_url_fopen = On

古き良きものを使用します

<?php include_once('http://example.com/example.inc.php');?>

私はこれを正しく安全に行いたいと思っています。

4

2 に答える 2

2

すべての解決策は正しく、安全性に実際の違いはありません。

違いは次のようにまとめることができると思います。

ini設定は、以前のバージョンで知られている動作を提供します。これらがデフォルトで無効になっている理由はセキュリティスレッドですが、これは3つのソリューションすべてに相当します。rmeoteサイトを制御しているかどうかに関係なく、リモートファイルを含めることはセキュリティの問題です。

file_get_contents()とcurl拡張子は、コンテンツをバッファリングする必要があるため、いくらかのオーバーヘッドを作成しますが、phpの場合、より表面的なものであるファイルをインクルードします。スクリプトを読むとき、それらの使用法は少し複雑です。ただし、バッファリングには利点もあります。たとえば、ローカルキャッシュを作成したり、基本的な妥当性チェックに向けてチェックサムを作成したりできます。また、実行前の構文チェックが可能であるため、呼び出し元のスクリプトのクラッシュを防ぐことができます。

Curlはphp拡張機能として提供されています。したがって、カールソリューションは、拡張機能がインストールされている場合にのみ機能しますが、はるかに高いレベルの自由度と、はるかに多くのオプションを提供します。それらを必要としない場合は、組み込み関数を使用してください。

于 2012-08-03T08:40:12.357 に答える
1

上手、

最初の方法=>正しいので、使用することを心配する必要はありません。

2番目の方法=>正しいですが、curl拡張を有効にする必要があります

3番目の方法=>正しいですが、allow_url_includeを有効にするとサイトが脆弱になる可能性があるため、このオプションの使用はお勧めしません。詳細については、 http://en.wikipedia.org/wiki/Include_vulnerabilityおよびこのリンクhttp://wiki.dreamhost.com/Allow_url_includeを参照してください。

于 2012-08-03T10:51:25.623 に答える