Apache下防止SQLite数据库被下载

SQLite简单教程最近很久没有更新稳定版本的typecho更新到了0.9版本,微魔于是在VPS尝试安装了一下,因为不需要复杂的数据库功能,因此选择了SQLite作为默认的数据库。在安装的过程中,尽管typecho自行随机了复杂的.db文件名,但是由于单文件的数据库在网站目录下(/usr下),而且微魔采用的是apt-get方式安装的Apache,没有进行相关的安全配置,这样,访客可以通过浏览器直接访问到SQLite数据库(***.db),这对于站长来说是个莫大的安全威胁。因此本文将介绍简单的2步,防止SQLite数据库被下载。

一、禁止Apache列出无首页文件夹内容

大家可能都有过这样的经历,访问一些网站使,当网站文件夹内无index.php等首页时,会列出文件夹下的所有文件,这对于网站数据非常不安全
方法1,一些网友对微魔所列的方法2有意见,因为如果是虚拟主机用户,并不具备修改Apache文件的权限,因此,我们还是采用修改.htaccess的方法,在网站根目录下的.htaccess加入如下代码

Options All -Indexes

方法2,删除Apache虚拟机配置里下面字段中的Indexes

...
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
...

重启/重载Apache,测试访问无index首页的网站目录,返回403 Forbidden,目的达到了,但是测试下载发现依然可以下载,因此我们还需要下一步

二、Apache伪静态禁止用户访问SQLite数据库

方法1(感谢网友小白),修改网站目录下的.htaccess文件,加入如下代码

RewriteRule (.*)\.db$ / [L,R=301]

方法2,下面我们就需要用到Apache所支持的伪静态.htaccess了,在sqlite数据库所在文件夹下创建.htaccess,并加入如下内容

<FilesMatch "\.db$">
Deny from all
</FilesMatch>

Sqlite可以修改文件格式,因此下面的.db可以换成你自己的实际的文件格式

重启/重载Apache,再测试进行下载发现会返回403 Forbidden了,就算大功告成了

本文仅在遇到问题后临时整理,欢迎大家提供更好的解决方式


感谢列表

本文内容柔和了许多国内匿名网友的知识源泉,欢迎原作者联系微魔增加转载链接。另外,本文初稿在完成后得到了一些热心网友的修正,这里值得一提的是,来自FedVPS(也就是Pzea,也就是…)的技术(也就是老板)的建议。微魔语言感谢的同时,顺便在本文免费提供小幅文字广告:

FedVPS – 一个曾经帮助微魔部落改进文章的VPS服务商~ – 无所不能的传送门

猜你 喜欢

关于作者: 微魔

小微魔,大智慧!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注