在PHP中,allow_url_fopen
标志控制是否可以将远程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.