index.php及其内容的保护

时间:2011-08-18 11:08:42

标签: php security

黑客有什么机会从服务器下载index.php文件(不是结果,而是index.php文件的内容)?您是否建议将index.php的内容放入modules / index_content.php,其中modules文件夹是.htaccess protected AND index.php包含唯一的字符串<?php require_once('modules/index_content.php') ?>?它有意义吗?

6 个答案:

答案 0 :(得分:4)

源代码泄露可能发生在配置良好的服务器上,并不像您想象的那么罕见。正如其他人所说,如果您的服务器配置是健全的,那么直接请求PHP文件的人就不会有问题。

但是你仍然可能容易受到:

可通过备份访问脚本资源

许多编辑者都会留下具有常见文件扩展名的备份文件,例如~.bak。您的服务器可能无法通过PHP解释器运行它们,因为它们通常通过文件扩展名配置。保留这些备份文件,您可能会披露您的来源。

包含本地文件

如果您有一个使用用户输入来读取其他文件的webapp,也会出现问题。如果脚本未正确验证用户输入,则可能容易受到LFI的攻击。这些脚本应仅读取列入白名单的文件,或至少限制在某个目录中。如果接受“../”,那么您将有一个目录遍历漏洞,这将加剧上述两个漏洞,甚至更严重。

此外,许多服务器已启用

目录浏览

如果没有默认文件(index.html,index.php,default.htm等),则服务器将列出目录中的文件。这不会自行披露任何来源,但允许将服务器上的许多文件(服务器端处理或未处理)枚举给恶意用户,从而可以轻松集中进一步的攻击。<​​/ p>

通过备用服务器披露来源

另一个意外情况可能是两个Web服务器指向(可能是间接)同一文档根目录。如果其中一个Web服务器未配置为处理PHP,则可以公开源。我已经看到,当web服务器被配置为针对某些URL模式(通常是通过目录)反向代理到链式应用服务器时,这种情况偶然发生了很多次。例如让Tomcat处理/ forum下的所有内容。

SQL注入

几乎每个严肃的DBMS都有一个允许它读取系统上文件的功能。如果您不保护数据库输入(请使用参数化查询),您可能很容易通过此机制泄露源代码。请注意,在这种情况下,源代码泄露是您最后的关注点。

我确信还有很多其他人,但这些是我看到这种披露的一些最常见的方式。请记住,安全是一个过程,其范围很广。通常,关注点,系统或应用程序的交互被视为导致问题的独立实体。

答案 1 :(得分:1)

如果* .php文件被Apache视为PHP文件(即正常呈现),那么不,他们无法访问源,至少没有通过其他脚本或手段访问服务器(在这种情况下,将脚本添加到modules / index_content.php不会产生任何影响。)

答案 2 :(得分:1)

没有任何意义。

如果有人有权访问您的index.php来源,他还可以访问所有已包含文件的来源。

答案 3 :(得分:1)

无法通过http下载.php文件,假设您的服务器配置不会更改(例如,删除了PHP文件的处理程序)。如果发生这种情况,那么.php文件可能会以纯文本文件的形式下载。

您应该将所有核心文件放在公共目录之外(public_html,htdocs等)并使用它们的路径调用它们。

答案 4 :(得分:1)

如果您在网络服务器上设置了PHP,则无法下载php文件。

作为注释:使用htaccess保护文件夹模块,在index.php中,当有人访问index.php时,你要包含该文件夹中的文件,他们必须提供密码和用户名才能访问所包含的文件。

答案 5 :(得分:0)

机会为空。但有两个例外:

  • “迷失”机器(通过SSH,FTP等,......)
  • 人为错误:如果您有一个读取文件的脚本,请确保它不能用于读取您的php文件。