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

Php 在web根目录之外存储脚本文件,php,.htaccess,Php,.htaccess,我看到过一些建议,建议将一些或所有php包含文件存储在web文档根目录之外的某个位置(在我的例子中是username/public_html),这是为了保护带有敏感信息(如数据库连接和登录信息)的php文件如果web服务器出现故障并停止保护php文件,并且这些文件对知道去哪里查找的外部人员来说是“可见”的 对我来说,这似乎有点偏执,但我猜人们在这件事上已经被严重烧伤了,所以我愿意接受。建议的形式通常是将include文件放在“../include_files/”中,这样它就不会直接放在文档根目录

我看到过一些建议,建议将一些或所有php包含文件存储在web文档根目录之外的某个位置(在我的例子中是username/public_html),这是为了保护带有敏感信息(如数据库连接和登录信息)的php文件如果web服务器出现故障并停止保护php文件,并且这些文件对知道去哪里查找的外部人员来说是“可见”的

对我来说,这似乎有点偏执,但我猜人们在这件事上已经被严重烧伤了,所以我愿意接受。建议的形式通常是将include文件放在“../include_files/”中,这样它就不会直接放在文档根目录中,也不会直接通过web服务器供外部用户访问

我的问题是:这种方式与将“include_files”目录放在文档根目录下并在其中粘贴一个.htaccess文件(带有适当的条目)在安全性方面是否有显著区别?将.htaccess文件放在“../include_files/”中会有显著的改进吗

蒂亚


Monte

这实际上取决于您的
include\u文件中的内容。最重要的是,将您拥有的任何凭证放在文档根目录之外(数据库登录等)。其他一切都是次要的,没有那么重要

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

application
library
public

DocumentRoot指向
public
,它只包含媒体文件、js/css文件。HTML/视图、db逻辑、conf/凭证位于
应用程序中。第三方库在
库中使用。htaccess增加了开销,因为Apache需要检查和处理另一项

不让文件进入Webroot并不是妄想症,这是一种很好的做法。如果有人直接访问其中一个“include”文件,并且由于没有加载所有先决条件文件而抛出显示错误,会发生什么情况


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

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


将它们从服务器根目录中取出;但是,防止浏览您网站的人访问这些文件。

+1指出.htaccess的性能缺点(另外,如果指定AllowOverride None,Apache甚至不会查找该文件)。同意您关于将文件保留在文档根目录之外的其他观点;设置需要几分钟的时间(特别是使用_autoload/spl_autoload_register),所以为什么不这样做呢?问题是:在许多/大多数共享主机中都无法做到这一点。否?根据我的经验,共享主机会给您一个目录,其中包含一个设置为公共的www目录。