PHP脚本可以包含在我的文件系统之外吗?

时间:2013-02-04 15:22:28

标签: php security

我有一个名为constants.php的PHP脚本,在那里我有很多有价值的数据,比如我的MySQL信息等。

是否可以在我的机器外访问该脚本?可以说,使用以下内容:include http://www.fakewebsite.com/config/constants.php

4 个答案:

答案 0 :(得分:2)

嗯,是的,没有。

:他们将能够访问文件constants.php的输出(但很可能是空白)。

:他们将无法访问您的变量。您只能在解析PHP之前访问这些文件。

答案 1 :(得分:2)

让我们阅读the docs

  

如果在PHP中启用了“URL fopen wrappers”(它们位于   默认配置),您可以指定要包含的文件   URL(通过HTTP或其他受支持的包装器 - 请参阅支持的协议   和Wrappers用于协议列表)而不是本地路径名。如果   目标服务器将目标文件解释为PHP代码,变量   可以使用所使用的URL请求字符串将其传递给包含的文件   使用HTTP GET。严格来说,这并不是一回事   包括文件并让它继承父文件的变量   范围;该脚本实际上是在远程服务器上运行的   然后将结果包含在本地脚本中。

因此,您实际上可以加载外部文件(如果您的管理员允许)。但是,它会对你的情况有用吗?在网络浏览器中打开http://www.fakewebsite.com/config/constants.php,然后打开“查看来源”菜单。无论你在那里看到什么,这都是你的PHP脚本会看到的(很可能是空白页)。

最后但并非最不重要......假设远程服务器配置为执行*.php个文件包含生成PHP代码的PHP脚本,为什么要将所有有价值和敏感的数据发布到互联网上?

答案 2 :(得分:1)

如果URL可以公开访问,那么是的,任何人都可以从URL中读取它,包括脚本。

然而,这里的关键部分是他们将访问constants.php输出,而不是文件本身。它们将获得与从Web浏览器访问文件时完全相同的输出。

他们不能做的是通过调用URL包含您的实际PHP代码。 URL不是与PHP文件的直接连接;它是与Web服务器的连接。然后,Web服务器处理PHP文件并提供输出。只要Web服务器在发送输出之前处理PHP文件,那么您的PHP代码是安全的。它无法通过URL看到。

可能还有其他方法可以实现,但不是那样。

答案 3 :(得分:0)

是的,只要您有权访问该脚本,就可以将其包含在自己的脚本中。