首页 » 技术新知 » 有效防止Access数据库被下载

有效防止Access数据库被下载

2008-12-02 17:00:002206 点击

在建一些小网站的时候大都用ASP+Access来完成,结合自己平时工作中应用到的方法,整理一下有效防止Access数据库被下载的方法。

可以想像,网站后台数据库被下载对于ASP+Access的网站来说,无疑是惨痛的,在我们做好SQL防注入的同时,也要做好Access数据库防下载。

下面是常用的一些防止Access数据库被下载的方法:

1、修改Access数据库名称

尽可能的使用一些意想不到的名称,再加上一些符号,让人不易猜中你的数据库名称。在Access数据库名称里包含 # 号和 %20 可以更有效防止被下载。

如:FF.ok#MDB_8y%20name.mdb

这种方法是最基础的,如果攻击者通过其他途径查看到数据库的文件名,数据库会被下载到。

2、修改数据库后缀名为ASP/ASA等

如:FF.ok#MDB_8y%20name.asp

如果是ASP.NET,也可以修改为ASPX/CONFIG/CS等后缀,不过使用下载工具,一样可以完整地把数据库文件下载下来。

3、加密数据库

使用Access数据库加密功能,给数据库加上密码。

作用不大,使用软件破解Access数据库密码一般只要几秒钟。

4、使用ODBC数据源

使用ODBC数据库连接数据库,能有效防止数据库被下载,不过对虚拟主机用户来讲,并不是很实用。

5、将数据库放到WEB目录外或放到其他虚拟目录中

如WEB目录是 D:\WEB 可以把Access数据库文件放到 D:\WEBDB 文件夹中,程序中数据库连接地址为:../WEBDB/FF.ok#MDB_8y%20name.asp ,这样程序可以正常调用数据库,而无法通过网站下载到Access文件。

这个是比较有效防止Access数据库被下载的方法,很多虚拟主机都支持这种方式,一般有专门放数据库的文件夹。

6、加入 <% 到数据库表中

我们将Access数据库后缀名改为ASP后,在IIS里将按ASP语法来解析,如果我们在Access数据库中加上一些错误的ASP代码,IIS解析时返回500错误,也可以确保Access数据库不会被下载。

方法可以参阅下面的示例代码,即在Access数据库中新建一个表,在表中新建一个数据类型为OLE对象的字段,然后写入一段单字节型的 <% ,这样IIS解析的时候只有开始符而没有 %> 结束标志,也可报错而防止数据库被下载。

<%
db = "../WEBDB/FF.ok#MDB_8y%20name.asp"
'数据库位置
set conn = Server.CreateObject("Adodb.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath(db)
conn.execute("create table notdownload(notdown oleobject)")
set rs = Server.CreateObject("adodb.recordset")
sql = "select * from notdownload"
rs.Open sql,conn,1,3
rs.AddNew
rs("notdown").Appendchunk(ChrB(Asc("<")) & ChrB(Asc("%")))
rs.Update
rs.Close
set rs = nothing
conn.Close
set conn = nothing
Response.Write("ok")
%>

修改上面的数据库位置,保存为.asp文件执行即可。

说到这里,使用这种方法最简单操作是下载一个动网论坛安装包,将数据库中的Dv_notdownload表直接导入Access数据库并修改数据库文件后缀即可很好地防止数据库被下载。

7、把Access数据库放到BIN目录

如果是ASP.NET,可以把Access数据库放到BIN目录中,IIS默认拒绝直接访问BIN目录下的文件,也能保护到Access数据库。

8、添加mdb的扩展映射

正常情况下,IIS对于不能解析的文件类型就会弹出下载对话框让用户下载,我们可以通过在IIS管理器中添加对mdb的扩展映射,防止数据库被下载。

设置方法是:打开IIS管理器定位到相应的Web站点,右键选择“属性”,然后依次点击“主目录 - 配置 - 映射”,在“应用程序扩展”里面添加.mdb文件应用解析,至于用于解析它的可执行文件大家可以自己进行选择,只要让攻击者无法访问数据库文件就可以了,也可以自己写个记事本文件,改后缀为.DLL,用在这里。

除此之外,以前还有人提到过,在IIS中将Access数据库文件的读取权限去掉来防止通过网站访问或下载数据库。个人觉得在上面总结的方法中,第5、6种方法是能够通用并能够有效防止Access数据库被下载的解决方案。

Access数据库下载

相关文章

  1. 回复2008-12-02 21:41:13
    受教了,看来我以后得注意修改下!
  2. 回复2009-04-27 00:44:13
    不错学习啦!!但是好像还没有一种真正可以做到有效防止被下载的方法!!
该博停止更新,欢迎关注主域名博客:[品味经典] www.fufuok.com