在Web根目录之外存储脚本文件

时间:2010-06-14 00:31:35

标签: php .htaccess

我已经看到建议存储部分或全部php包含文件,而不是在web文档根目录(在我的情况下为username / public_html)中,因为保护带有敏感信息的php文件的特定原因(如数据库连接和登录信息)如果网络服务器打嗝并停止保护php文件,它们对于知道在哪里看的外人来说是“可见的”。

对我来说这似乎有些偏执,但我猜这些人之前已经被严重烧伤所以我愿意继续这样做。该建议通常采用包含文件的形式,例如“../include_files/”,因此它不直接在文档根目录中,也不能通过Web服务器直接访问外部人员。

我的问题是:这种方式之间的安全性是否存在显着差异,只是将“include_files”目录放在文档根目录下并在其中粘贴.htaccess文件(带有相应的条目)?将.htaccess文件放在'../include_files/'中会对进行任何重大改进吗?

TIA,

3 个答案:

答案 0 :(得分:14)

使用.htaccess会增加开销,因为Apache有另一个需要检查和处理的项目。

将文件保留在Web根目录之外并不是偏执狂,这是一种很好的做法。如果有人直接访问其中一个“包含”文件会导致显示错误,因为所有必备文件都没有加载,会发生什么?

每个文件都需要进行自己的安全检查,以确保它在预期的环境下运行。 Web可访问区域中的每个可执行文件都是潜在的安全漏洞。

答案 1 :(得分:5)

这取决于你include_files中的内容。最重要的是,您将任何凭据放在文档根目录之外(数据库登录等)。其他一切都是次要的,并不重要。

如果您不希望任何人窃取您的源代码,请尝试遵循Zend约定:

application
library
public

DocumentRoot指向public,它只包含媒体文件,js / css文件。 HTML /视图,数据库逻辑,配置/凭据位于application。第三方库位于library

答案 2 :(得分:0)

理论上,如果你只是在文件夹中粘贴.htaccess文件,你仍然可以直接调用.php文件。

将它们从服务器根目录中取出;但是,要让正在浏览您网站的人永远访问它们。