我正在开发一个网站,用户提交链接,并指定该链接的图像作为缩略图。该图像将从网页保存,而不是由用户上传。从外部服务器可靠,安全地保存图像
好像我有两个选择这样做,他们是file_get_contents
和cURL
的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,如果有任何类或功能,将有助于此。
我避免了文件上传,因为它不是用户应该做的事情。我不希望他们保存图片并上传。 – Motive
至于安全性,我的担心更多的是确保文件只是一个图像,并且不包含任何恶意内容。 – Motive
看一下codeigniters的核心/库/ Upload.php文件(具体是MIME类型检查)。您不能依赖文件扩展名(例如jpg/png)来确定文件的实际类型。就内容而言,对于短时间使用A/V软件进行扫描,您所能做的并不多。请参阅http://stackoverflow.com/a/8638112/183254 – stormdrain