如何在共享主机中存储配置


How to store configuration in shared hosting

假设我们有一个共享主机。web根目录位于/home/username/www/。现在,我有一个PHP应用程序,它读取位于/home/username/www/include/config.json的配置文件。该配置文件保存了密码和其他配置信息。假设访问/home/username/或web根目录以外的任何目录是不可能的,我该如何从直接访问GET的人那里保护config.json ?

如果在明文文件中存储配置信息是不可行的,请建议其他方法。

有两种方法可以保护目录结构并防止读取目录中的其他文件和内容。

禁用目录内容列表

使用htaccess

在.htaccess文件中添加以下内容将禁用目录列表。

Options -Indexes
使用index . html

如果服务器不允许这样做,那么最简单的方法是在所有目录中放置一个虚拟的index.html文件。这样当目录路径被访问时,index.html将打开。

将资源保留在WEB_ROOT之外

当在服务器上托管应用程序时,路径通常是这样的:

/var/www/

/home/username/www/

所有的网页内容都保存在www内,然后只有它可以在网站上访问。但是那些不能直接从url访问的内容,可以保存在/www之外。

例如上传图片,或资源文件,或包含数据库连接参数或任何文件。

在 中浏览器调用的php文件
/var/www/

中的其他资源文件
/var/outside/

通过这样做,即使启用了目录列表,文件也会自动对外界不可见。

你需要一个。htaccess文件在你的include目录中,使它从外部不可用:

Options -Indexes
Order allow,deny
Deny from all

或apache 2.4

Options -Indexes
Require all denied
另一个解决方案是将include移动到/home/username/include