2

ユーザーがリンクを送信し、そのリンクからサムネイルとして使用する画像を指定するサイトを開発しています。画像は、ユーザーがアップロードするのではなく、Web ページから保存されます。

これを行うには2つのオプションがあるようですが、それらfile_get_contentscURL

file_get_contents の例:

$url = 'http://example.com/file_name.jpg';
$img = '/path/file_name.jpg';
file_put_contents($image, file_get_contents($url));

cURL の例:

$ch = curl_init('http://example.com/file_name.jpg');
$fp = fopen('/path/file_name.jpg', 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);

信頼性とセキュリティの観点から、どちらが優先されますか? 現在のメソッドを使用してリモート ファイルをフェッチすることには、どのようなセキュリティ上の懸念があり、どのようにそれらを保護できますか?

これに役立つクラスまたは関数があれば、Codeigniter を使用しています。

4

1 に答える 1

2

信頼性とセキュリティの観点から、どちらが優先されますか? 現在のメソッドを使用してリモート ファイルをフェッチすることには、どのようなセキュリティ上の懸念があり、どのようにそれらを保護できますか?

まあ、まず第一に、それがポイントである場合、これは人々がアップロードできるようにするよりも安全ではありません. 十分に注意しないと、jimmyB が Malicious.js を自分のサーバーにアップロードし、いずれかのメソッドが自分のファイルをサイトに配信する可能性があります。

これらのメソッドを使用するよりも、CI の File Upload クラスを検討することをお勧めします。どちらの方法でも最終的には、サーバー上にファイルが作成されます。CIのファイルアップロードでは、少なくともファイルタイプなどの組み込みチェックがいくつかあります。CIのXSSフィルタリングなどを利用することもできます。

http://ellislab.com/codeigniter/user_guide/libraries/file_uploading.html

于 2012-11-09T19:54:10.727 に答える