真的有办法做到这一点吗?从服务器检索原始.php文件(除了进入服务器的FTP帐户)?这是为什么有加密php源代码的工具/脚本的原因?
如果这是真的,那么如何防范呢? (不使用php源代码加密)
编辑:提到的服务器有php运行,例如。 apache-php-mysql,您的标准托管服务器配置。
答案 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服务器设置非常重要,并确保您没有做些傻事。