【问题标题】:PHP security : retrieving PHP file from server, un-processedPHP 安全性:从服务器检索 PHP 文件,未处理
【发布时间】:2009-01-31 08:49:59
【问题描述】:

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

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

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

【问题讨论】:

    标签: php security


    【解决方案1】:

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

    如果您谈论的是您自己的服务器(即您自己可以访问的服务器),那么您可以将一些简单的脚本放在服务器上,允许您指定服务器上任何文件的路径并拥有它以明文形式返回。 但是,出于上述原因,您永远不想将这样的脚本放在生产服务器上。

    【讨论】:

    • 知道了。然后唯一的方法是将提到的脚本上传到服务器并运行它。你说的是这个吗?
    • 嗯,是的,除非你想禁用服务器上的 php 处理,或者重命名 php 文件
    【解决方案2】:

    一般来说,您无法访问远程源代码。要发生这种情况,必须禁用 PHP 模块。

    但作为一个思想实验,这怎么可能发生?

    撇开可以访问整个文件系统的大规模漏洞利用不谈,想象一下应用程序中是否存在安全漏洞,允许您在 .htaccess 文件中插入一行。鉴于 httpd 进程可写入的 .htaccess 对 Wordpress 等应用程序很有用,因此这种可能性并不太奇怪。

    如果你添加了这个:

    php_value engine off
    

    源文件现在可以下载了!

    【讨论】:

    • 我不喜欢看到你的代表。 8990 ? +1 来自我。 ..开玩笑,很好的答案,以前不知道这种方法。一如既往地感谢保罗。
    【解决方案3】:

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

    一些例子:

    • 有些服务器被配置为在请求时显示highlighted source code of a PHP file,而不是.phps
    • 一些开发人员将.inc 用于打算使用includerequire 包含的文件。如果服务器未配置为也将这些作为 PHP 进行处理,则在直接请求它们时,它们将作为纯文本传递。

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 嗯.. 不,服务器正在运行 php。但如果这是唯一的情况,真的有办法修补服务器以禁用 php 或其他什么吗?
      • 不,什么?我不明白。你说的和我说的一样。除非他们有权访问配置文件,否则无法远程禁用 php。
      【解决方案5】:

      过去我遇到过一个配置错误的 Web 服务器,它通过 PHP 解释器正确设置了一个虚拟主机来服务器 PHP 文件。有第二个虚拟主机指向同一目录,但没有启用 php。这意味着像“config.php”这样的东西,用于以纯文本形式显示的几个应用程序。众所周知,典型的 config.php 具有数据库身份验证凭据和其他不应该知道的东西。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-29
        • 1970-01-01
        • 1970-01-01
        • 2010-11-02
        • 1970-01-01
        • 2010-10-27
        相关资源
        最近更新 更多