我已经看到建议存储部分或全部php包含文件,而不是在web文档根目录(在我的情况下为username / public_html)中,因为保护带有敏感信息的php文件的特定原因(如数据库连接和登录信息)如果网络服务器打嗝并停止保护php文件,它们对于知道在哪里看的外人来说是“可见的”。
对我来说这似乎有些偏执,但我猜这些人之前已经被严重烧伤所以我愿意继续这样做。该建议通常采用包含文件的形式,例如“../include_files/”,因此它不直接在文档根目录中,也不能通过Web服务器直接访问外部人员。
我的问题是:这种方式之间的安全性是否存在显着差异,只是将“include_files”目录放在文档根目录下并在其中粘贴.htaccess文件(带有相应的条目)?将.htaccess文件放在'../include_files/'中会对进行任何重大改进吗?
TIA,
蒙
答案 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文件。
将它们从服务器根目录中取出;但是,要让正在浏览您网站的人永远访问它们。