2011-08-18 84 views
5

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

+2

除非你的PHP安装搞砸了,他们不能下载代码(假设他们没有ssh,ftp等访问权限)。我安装了一次php + apache,并忘记重新启动apache,结果人们能够看到我的* .php文件的源代码。 – Vamsi

回答

4

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

但是你仍然有可能受到:

脚本源通过备份残疾人专用

许多编辑留下常见的文件扩展名的备份文件,如~.bak。您的服务器可能无法通过PHP解释器运行这些服务器,因为它们通常是通过文件扩展名配置的。留下这些备份文件,你可以公开你的来源。

本地文件包含

还可以有一个问题,如果您有使用用户输入读取其他文件的web应用程序。如果脚本没有正确验证用户输入,它可能容易受到LFI的影响。这些脚本只能读取列入白名单的文件,或者至少应限制在某个目录中。如果“../”被接受,那么你有一个目录遍历漏洞,这将加剧上述两个漏洞会更加严重。

添加到这一点,许多服务器已经启用

目录浏览

这是当你的服务器将列出目录中的文件,如果一个默认文件不存在(index.html,index.php,default.htm等)。这不会公开任何来源,但允许服务器上的许多文件(服务器端处理或不处理)将被枚举给恶意用户,使其成为可能非常容易集中进一步的攻击。经由备用服务器

来源公开

另一个意外情形可以是当指出两个web服务器(可能是间接地)在相同的文档根。如果其中一个Web服务器未配置为处理PHP,则可以披露该源。当一个Web服务器被配置为反向代理某个URL模式的链式应用程序服务器(通常通过目录)时,我曾多次意外地看到过这种情况。例如让Tomcat处理/ forum下的所有内容。

SQL注入

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

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

+0

+1实际提及真正的攻击考虑。虽然应该注意的是,在一个现代的Linux发行版中,您将无法使用DMBS的文件io功能访问web根目录。 AppArmor或SELinux会阻止你。它应该在没有问题的默认窗口框上工作。 – rook

1

如果* .php文件被Apache视为PHP文件(即正常呈现),则不能访问源,至少不能通过其他脚本或方式访问服务器(在这种情况下,将脚本添加到modules/index_content.php将不会产生影响)。

1

它没有任何意义。

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

1

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

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

+0

+1将您的核心代码保留在文档根目录之外。这可以真正限制其他漏洞的影响。 – Cheekysoft

+0

如果您有目录遍历漏洞,则可能会发生这种情况。 – rook

1

如果您已经在您的网络服务器上设置了PHP,他们无法下载php文件。

注意:使用htaccess保护文件夹模块,并在index.php文件中包含一个文件,当有人访问index.php时,他们必须提供密码和用户名才能访问包含的文件。

0

有可能为空。两大例外,但:

  • “迷失”机(通过SSH,FTP等,...)
  • 人类的错误:如果你有一个脚本读取文件,以确保它无法使用阅读你的PHP文件。