【问题标题】:file_get_contents vs cUrl. Which is more relevant and secure?file_get_contents 与 cUrl。哪个更相关和安全?
【发布时间】:2014-11-16 05:30:55
【问题描述】:

在安全性方面哪个更合适?

如果是file_get_contents(),如果发生任何错误,它会在错误消息中显示被调用的url,这可能是易受攻击的。

【问题讨论】:

  • >>显示错误消息中调用的 url
  • 两者都是安全的,但curl 会为您提供file_get_contents() 无法提供的选项
  • 是的,@jogesh_pi curl 为您提供了更多选择,但您真的应该告诉我们您想要做什么。
  • 是的,我错过了可以关闭错误报告的部分。关闭它后,我可以使用 file_get_contents() 或 curl。谢谢。

标签: php security curl file-get-contents


【解决方案1】:

我认为 curl 更安全,因为如果您使用 file_get_contents() 处理远程文件,则需要启用“allow_url_fopen”

参考:
http://25labs.com/alternative-for-file_get_contents-using-curl/
http://phpsec.org/projects/phpsecinfo/tests/allow_url_fopen.html

并继续从问题中的 cmets 进行讨论,是的 cURL 为您提供了更多选择,如果您想检查更多,您可以在文档中查看它here
对于 file_get_contents() 它只是一个简单的 GET 请求。

【讨论】:

    【解决方案2】:
    • file_get_contents 仅对 GET 请求有用
    • file_get_contents 需要allow_url_fopen 才能访问远程源

    如果启用了 fopen 包装器,则 URL 可以用作此函数的文件名。有关如何指定文件名的更多详细信息,请参阅 fopen()。请参阅支持的协议和包装器以获取有关各种包装器具有哪些功能的信息的链接、有关它们的使用说明以及它们可能提供的任何预定义变量的信息。

    • 您在使用 cURL 的请求中有更多选项。看看setopt

    它会显示在错误消息中调用的 url,这可能是易受攻击的。

    关闭错误报告并确保 display_errors 已停用。创建自己的处理程序来处理错误也可能是值得的。

    error_reporting(0);
    ini_set('display_errors', 0);
    

    【讨论】:

    • cURL 仍然更强大,但 file_get_contents 支持流上下文,这使它实际上可以做很多事情,包括任何任意方法,包括 POST。
    【解决方案3】:

    file_get_content 可以通过 stream_context_set_option 发布,但是,我认为 curl 可能更强大。

    参考:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-25
      • 2012-06-19
      • 1970-01-01
      • 1970-01-01
      • 2011-08-21
      • 1970-01-01
      • 2011-11-11
      • 2022-08-08
      相关资源
      最近更新 更多