因为这个原因,许多安全研究人员建议在php.ini配置禁用allow_url_fopen。不幸的是,许多人推荐这种方法并没有意识到这将摧毁许多应用程序和不保证远程URL 100%包括及其带来的不安全感。

通常,用户在使用其他文件系统功能时,需要PHP禁止URL包含和请求声明支持。

为此,allow_url_include计划提供php6。在这些讨论中,这些功能是在php5.2.0.now回迁的安全研究人员已经改变了他们的建议,只是建议人们禁止allow_url_include。

不幸的是,allow_url_fopen和allow_url_include不是问题的原因。一方面,包括在应用程序的本地文件仍然是非常危险的,因为攻击者往往会通过会话数据的PHP代码,上传文件,日志文件,等等。

另一方面,allow_url_fopen和allow_url_include只有防止URL处理,这是标记为URL,从而影响HTTP(S)和FTP(S),但这并不影响这些形式。

示例1:使用php输入来读取POST数据





< PHP
不安全的/包含
以下语句包括
并执行张贴的所有内容
服务器

包含PHP输入/输入;
>

示例2:使用数据:包含任意代码





< PHP
不安全的/包含
以下语句包括
执行base64编码 / /包括
这是phpinfo /有效载荷。()

包括数据:;base64,pd9wahagcghwaw5mbygpoz8 + ;
>

这将是非常明显的发现在我们的操作,也不url_allow_fopen url_allor_include保证。这些仅仅是因为过滤器很少过滤载体。为了解决这个URL的方式包括漏洞是我们了Suhosin分机100%。