Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CURL vs allow_url_fopen哪一种获取图像更安全?_Php_Security_Curl - Fatal编程技术网

Php CURL vs allow_url_fopen哪一种获取图像更安全?

Php CURL vs allow_url_fopen哪一种获取图像更安全?,php,security,curl,Php,Security,Curl,我有一个脚本,用户可以输入一个图像URL(来自另一个网站),然后使用JS裁剪它,并将其保存在我的服务器上 我的问题是。。。从另一台服务器获取图像时,使用CURL或allow_url_fopen(通过file_get_contents())更安全吗?或者是否有首选/更安全的方法 安全性对我来说是一个很大的问题,因为我知道这是一个非常危险的过程-脚本只需要为图像文件工作,如果这有什么不同 谢谢卷曲通常是一种更安全的方法。您需要做出明确的设计/编码决策,以允许curl的结果直接影响您的程序,而在f*(

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

我的问题是。。。从另一台服务器获取图像时,使用CURL或allow_url_fopen(通过file_get_contents())更安全吗?或者是否有首选/更安全的方法

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


谢谢

卷曲通常是一种更安全的方法。您需要做出明确的设计/编码决策,以允许curl的结果直接影响您的程序,而在f*()函数中允许url会让

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

发生时不会出错。

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

你所要做的就是确保你不会在文件中执行/包含任何内容。既然你只打算裁剪图像,我认为你很好:)


我建议使用cURL-tho,allow\u-url\u-fopen可能会在代码的其他地方引发安全问题。

cURL的错误处理比
file\u-get\u-contents()好得多。
。如果你在意的话,卷曲可能是最好的选择。如果一个简单的“oops,那不行”就足够了,那么,
file\u get\u contents()
是一个完全可以接受的快捷方式。

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

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

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

回到您的问题,allow_url_fopen是一个配置指令。我想你是说。两者都可以。正如其他人指出的,Curl有点冗长,而且速度更快


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

cURL有更多选项和可能性

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

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

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

此线程的答案显示了一个很好的cURL函数:

include()
由更严格的
allow\u url\u include
控制,而不是
allow\u url\u fopen
。使用
file\u get\u contents()
是无害的。