allow_url_fopen会影响哪些PHP函数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (256)

在PHP中,allow_url_fopen标志控制各种文件系统函数是否可以使用远程URL ,以便访问远程文件。

现在建议安全性最佳实践禁用此选项,因为它是潜在的攻击媒介。但是,如果禁用该设置,任何依赖于此功能以便工作的代码都将被破坏。例如,我知道至少有一个reCaptcha插件file_get_contents()用于访问Google API,因此依赖于此标志。

为了检查我们的应用程序中的代码,以确定是否可以安全地禁用此标志(以便在必要时重写),我需要一个它影响的PHP函数的规范列表。但是,我一直无法找到这样的列表 - 在PHP网站上似乎没有一个列表,谷歌搜索也没有提供任何信息。

  • 任何人都可以提供其行为受其影响的所有PHP函数的列表allow_url_fopen吗?

接受的答案应该引用权威来源或提供有关编制列表的方法的详细信息,以证明其正确性和完整性。

提问于
用户回答回答于

函数列表很大,因为allow_url_fopenini指令是在PHP的流系统中实现的,这意味着使用PHP的网络流的任何东西都会受到影响。

这包括几乎每个PHP扩展的函数,它不使用外部库来获取对远程文件的访问权限。像cURL这样的扩展使用自己的PHP之外的传输层。

一些扩展,众所周知地ext/soap在某些方面绕过了这个指令(由于什么原因我不完全知道,因为我不熟悉这个扩展的内部)。

从标准库中的任何功能(在实施:main/Zend/ext/standardext/spl),这意味着每个文件系统,数据流,包括和URL封装尊重这个指令。从头到尾我也知道这样ext/exif做。

如果基于XML的扩展,我不能在我的头顶记得(如ext/libxmlext/simplexmlext/xmlreaderext/xmlwriterext/dom)这样做,但我一定会出现在过去的一个点,他们不尊重它的路径是直接供给的libxml2下。

扫码关注云+社区

领取腾讯云代金券