PHP安全性:从服务器检索PHP文件,未经处理

时间:2009-01-31 08:50:00

标签: php security

真的有办法做到这一点吗?从服务器检索原始.php文件(除了进入服务器的FTP帐户)?这是为什么有加密php源代码的工具/脚本的原因?

如果这是真的,那么如何防范呢? (不使用php源代码加密)

编辑:提到的服务器有php运行,例如。 apache-php-mysql,您的标准托管服务器配置。

5 个答案:

答案 0 :(得分:16)

如果你在谈论别人的服务器,那么简短的回答是否定的。如果第三方可以阅读您的PHP源代码,那将是一个相当大的安全漏洞,因为PHP文件往往包含数据库密码,哈希密钥,专有算法以及您不希望落入坏人手中的其他好东西。

如果您正在谈论自己的服务器(即您自己有权访问),那么您可以在服务器上放置简单的脚本,允许您指定服务器上任何文件的路径并具有它以纯文本形式返回。 但是,由于上述原因,您从未想过将这样的脚本放在生产服务器上。

答案 1 :(得分:6)

一般来说,您无法访问远程源代码。必须禁用PHP模块才能实现此目的。

但作为思想实验,这会怎么样?

除了可以访问整个文件系统的批处理漏洞之外,想象一下应用程序中是否存在允许您在.htaccess文件中插入一行的安全漏洞。鉴于httpd进程可写的.htaccess对Wordpress等应用程序很有用,它的可能性并不太古怪。

如果你添加了这个:

php_value engine off

源文件现在可以下载了!

答案 2 :(得分:4)

如果没有很好地配置服务器PHP文件不是句柄,那么可能会这样做。

一些例子:

  • 某些服务器配置为在.phps请求.inc时显示highlighted source code of a PHP file
  • 有些开发人员使用include来查看要使用require或{{1}}包含的文件。如果服务器没有配置为以PHP格式处理这些服务器,则直接请求时它们将以纯文本形式发送。

但开发人员也可能是漏洞的来源。例如,当他使用脚本从服务器下载文件时,该脚本几乎接受所有输入而无需验证。

答案 3 :(得分:1)

如果文件是从启用了PHP解释的Web服务器(通过HTTP)提供的,那么它将被处理。接收未经处理的代码的唯一方法是以某种方式禁用PHP。

答案 4 :(得分:0)

我在过去遇到了一个配置错误的Web服务器,它通过PHP解释器将一个虚拟主机正确设置为服务器PHP文件。有第二个虚拟主机指向同一目录,但没有启用php。这意味着几个应用程序的'config.php'就像纯文本一样可见。众所周知,典型的config.php具有数据库身份验证凭据和其他不应知道的内容。

因此,理解您的Web服务器设置非常重要,并确保您没有做些傻事。