14

PHPでWebアプリケーションを作成していて、別のドメインのコンテンツを読みたいと思っています。私の主な選択肢はfopenとのようcurlです。

特にセキュリティと利用可能なオプションに関して、これら2つの方法の主な違いは何ですか?

URLがhttpサイトかhttpsサイトかは重要ですか?

4

2 に答える 2

17

Curlは外部ライブラリを使用し、リクエストをカスタマイズするためのより多くの機能を備えています-カスタムヘッダー、POSTリクエストの生成、ファイルのアップロード。あなたが必要とするすべては私が言わなければなりません。

Fopenは、それ以上のカスタマイズを行わずに、URLのGETリクエストを行うだけに制限されています。

セキュリティに関しては、CURLはPHPのセキュリティ構成の影響を受けません(リモートURLの禁止されたfopenなど)。

どちらの可能性も、必要なあらゆる方法で使用できるデータを返します。プロジェクトにセキュリティホールを作成した場合、データを取得した後は結局のところあなたの責任です。

また、よくわかりませんが、fopenはSSL(https)接続を処理できないと思います。fopenとCURLの両方がSSLをサポートしています(以下のコメントでAndy Shellamが指摘しています)。

于 2010-02-19T13:35:32.747 に答える
2

PHPでfopen($ url)を使用することとcurlを使用することの重要な違いは何ですか?を参照してください。fopenに影響するいくつかのセキュリティ設定、つまりallow_url_includeの場合。

また、curlを使用してCURLOPT_FOLLOWLOCATIONを設定すると、curlはfile://へのリダイレクトに従ってデータをフェッチすることに注意してください(引き続きopen_basedirの対象となります)。ftp://などの他のスキームへのリダイレクトはさらに悪い可能性があります(ftp://をテストしていません)。それがないと、setoptcurlはリダイレクトにまったく従いません。fopenはデフォルトで302で動作するようですが、http://-> http://のみで、http://-> file://では動作しません。

于 2010-02-20T06:00:41.560 に答える