我有一个名为constants.php
的PHP脚本,在那里我有很多有价值的数据,比如我的MySQL信息等。
是否可以在我的机器外访问该脚本?可以说,使用以下内容:include http://www.fakewebsite.com/config/constants.php
答案 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)
是的,只要您有权访问该脚本,就可以将其包含在自己的脚本中。