我正在建立一个易于设置,无数据库的PHP网站,它将数据存储在文本文件中。
设置是 Linux / Apache / PHP 服务器。
到目前为止,信息一直是非敏感,因此我存储在:../data/system.txt
理论上有人可以在浏览器中输入(url)/data/system.txt
并查看普通数据文件文字,到目前为止无关紧要。
但现在我想存储密码,以便各种群组可以登录并查看不同的信息。这些网站将是“低利率”和“低调”网站,如果有人厌倦了破解网站并查看信息,那么这不是世界末日,我只想提供一些技术障碍,以便网站可以拥有个人和群组访问权限,同时保留轻松创建例如其中50个网站无需设置和维护50个数据库。
我的问题是,在Apache上保护这些文本文件的最佳方法是什么?
我能想到以下几点:
1)将“../data
”目录更改为某些随机目录名,例如“../data928374928374
”作为一种混淆措施
2)将 .txt文件更改为.php ,并使用以下PHP代码保护文本:
<?php
echo 'access denied';
die;
/*
...store data here...
*/
?>
3)将此 .htaccess文件放在/ data目录中以保护带.txt和其他结尾的文件:
<FilesMatch "\.(sqlite|xml|txt|csv|php)$">
Deny from all
</FilesMatch>
以下是我对这些的看法:
1)我可以想象在这样的服务器上有方法找出隐藏目录的名称,这是真的吗?
2)尴尬有一个名为.php的文本文件并且包含PHP代码,因为我希望非技术人员能够编辑文本文件并将其删除为 - 是在数据目录中,让它们工作,,而不必“用技术代码”来理解它们。更不用说这会在大多数编辑器中弄乱语法着色。
3)此.htaccess文件是否适用于所有服务器&gt; ,例如如果我只是按原样将网站复制到任何Apache服务器,我保证文件是否受到保护,还是有其他设置可以关闭.htaccess文件在Apache服务器上的效果?
答案 0 :(得分:4)
您也可以使用SQLite或类似的实际上不需要数据库服务器的东西。
另一个想法是拥有像
这样的结构/app
/public_html
/data
并让public_html包含您的网站,该网站向外界展示,而且/数据无法访问(仅限您的脚本)。
在/ app文件夹中,您可以创建一个htaccess规则,该规则将始终将所有要求重定向到punlic_html文件夹,以便外部用户无法看到它(可以在幕后进行)。如果两个文件夹都是包含.htaccess文件的副本,这对于一步部署来说就足够了
答案 1 :(得分:0)
存储包含htdocs树之外的任何敏感内容的文件?
答案 2 :(得分:0)
如果它只是一个PHP读取文件,那么如果你有一个好的主机就很容易。
大多数情况下,您的Web根目录不是服务器的根目录。
例如,在我的主机上,web目录的路径是/ data / domain / www /,它是浏览器中http://www.domain.com/的路径。
但我可以在该级别下创建一个文件夹,例如,/ data / domain / secret_folder /浏览器无法访问该文件夹,但如果它位于同一台服务器上,则可以通过PHP读取{{1} }