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));

卷曲示例:

$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 可以将恶意.js 上传到他的服务器,然后你的任何一种方法都会在你的网站上提供他的文件。

我建议考虑 CI 的 File Upload 类,而不是尝试使用这些方法。无论哪种方式,最终结果都是您最终在服务器上得到一个文件;使用 CI 的文件上传,至少有一些内置的文件类型检查等。您还可以利用 CI 的 XSS 过滤和东西。

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

于 2012-11-09T19:54:10.727 回答