在 PHP 中,allow_url_fopen
flag 控制远程 URL 是否可以是 used by various file system functions , 以便访问远程文件。
现在推荐的安全最佳做法是禁用此选项,因为它是一个潜在的攻击媒介。但是,如果禁用该设置,任何依赖此功能才能工作的代码都将被破坏。例如,我知道至少有一个 reCaptcha 插件使用 file_get_contents()
访问 Google API,因此依赖于这个标志。
为了检查我们应用程序中的代码以确定禁用此标志是否安全(以便在必要时重写),我需要它影响的 PHP 函数的规范列表。但是,我一直无法找到这样的列表 - PHP 网站上似乎没有这样的列表,而且 Google 搜索也没有找到任何结果。
- 谁能提供其行为受
allow_url_fopen
影响的所有 PHP 函数的列表?
接受的答案应引用权威来源或提供有关用于编制列表的方法的详细信息,以证明其正确性和完整性。
最佳答案
函数列表非常庞大,因为 allow_url_fopen
ini 指令是在 PHP 的流系统中实现的,这意味着任何使用 PHP 网络流的东西都会受到影响。
这包括几乎所有不使用外部库访问远程文件的 PHP 扩展的函数。由于 cURL 等一些扩展在 PHP 之外使用了自己的传输层。
一些扩展,臭名昭著的 ext/soap
确实以某些方式绕过了这个指令(我不完全知道是什么原因,因为我不熟悉这个扩展的内部结构)。
标准库中的任何函数(实现于:main/
、Zend/
、ext/standard
、ext/spl
),这意味着每个文件系统、流、包含和 URL 包装器都遵守此指令。从我的脑海中,我也知道 ext/exif
可以做到这一点。
我不记得是否有基于 XML 的扩展(例如 ext/libxml
、ext/simplexml
、ext/xmlreader
, ext/xmlwriter
, ext/dom
) 这样做,但我敢肯定过去有一点他们不尊重它,因为路径是直接的提供给下面的 LibXML2。
关于php - 哪些 PHP 函数受 allow_url_fopen 影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55313024/