我有一个脚本,用户可以输入图像URL(来自其他网站),然后使用JS裁剪它并将其保存在我的服务器上。
我的问题是......从其他服务器获取图像时使用CURL或allow_url_fopen(通过file_get_contents())更安全吗?或者是否有更好/更安全的方法?
安全性对我来说是一个大问题,因为我知道这是一个非常危险的程序 - 如果图像文件有所不同,脚本只需要工作。
谢谢
答案 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)
include('http://example.com/really_nasty_remote_takeover.php');
没有错误发生。