Access数据库安全防范措施

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Access数据库安全防范措施
什么是mdb呢?凡是有点制作网站经验的网络管理员都知道,目前使用“IIS+ASP+ACCESS”这套组合方式建立网站是最流行的,大多数中小型Internet网站都使用该“套餐”,但随之而来的安全问题也日益显著。

其中最容易被攻击者利用的莫过于mdb 数据库被非法下载了。

mdb数据库是没有安全防范的,只要入侵者猜测或者扫描到mdb数据库的路径后就可以使用下载工具轻松将其下载到本地硬盘,再结合暴力破解工具或一些超级破解工具可以轻松的查看里头的数据库文件内容,企业的隐私和员工的密码从此不在安全。

难道我们就没有办法加强mdb数据库的安全吗?难道即便我们只有一点点数据资料也要麻烦sql server或者oracle吗?答案是否定的,本篇文章笔者将告诉大家打造安全的mdb数据库文件的独门秘诀。

一、危机起因:
一般情况下基于ASP构建的网站程序和论坛的数据库的扩展名默认为mdb,这是很危险的。

只要猜测出了数据库文件的位置,然后在浏览器的地址栏里面输入它的URL,就可以轻易地下载文件。

就算我们对数据库加上了密码并且里面管理员的密码也被MD5加密,被下载到本地以后也很容易被破解。

毕竟目前MD5已经可以通过暴力来破解了。

因此只要数据库被下载了,那数据库就没有丝毫安全性可言了。

二、常用的补救方法:
目前常用的数据库文件防止被非法下载的方法有以下几种。

(1)把数据库的名字进行修改,并且放到很深的目录下面。

比如把数据库名修改为Sj6gf5.mdb,放到多级目录中,这样攻击者想简单地猜测数据库的位置就很困难了。

当然这样做的弊端就是如果ASP代码文件泄漏,那无论隐藏多深都没有用了。

(2)把数据库的扩展名修改为ASP或者ASA等不影响数据查询的名字。

但是有时候修改为ASP或者ASA以后仍然可以被下载,比如我们将其修改为ASP以后,直接在IE的地址栏里输入网络地址,虽然没有提示下载但是却在浏览器里出现了一大片乱码。

如果使用或影音传送带等专业的下载工具就可以直接把数据库文件下载下来。

不过这种方法有一定的盲目性,毕竟入侵者不能确保该文件就一定是MDB数据库文件修改扩展名的文件,但是对于那些有充足精力和时间的入侵者来说,可以将所有文件下载并全部修改扩展名来猜测。

该方法的防范级别将大大降低。

三、笔者的旁门左道:
在笔者的测试过程中就遇到了ASP和ASA文件也会被下载的问题,所以经过研究发现了以下的方法。

如果在给数据库的文件命名的时候,将数据库文件命名为“#admin.asa”则可以完全避免用IE下载,但是如果破坏者猜测到了数据库的路径,用FlashGet还是可以成功地下载下来,然后把下载后的文件改名为“admin.mdb”,则网站秘密就将暴露。

所以我们需要找到一种FlashGet无法下载的方法,但是如何才能让他无法下载呢?大概是因为以前受到unicode 漏洞攻击的缘故,网站在处理包含unicode码的链接的时候将会不予处理。

所以我们可以利用unicode编码(比如可以利用“%3C ”代替“<”等),来达到我们的目的。

而FlashGet在处理包含unicode码的链接的时候却“自作聪明”地把unicode编码做了对应的处理,比如自动把“%29”这一段unicode编码形式的字符转化成了“(”,所以你向FlashGet提交一个的下载链接,它却解释成了,看看我们上面的网址的地方和下面的重命名的地方是不同的,FlashGet把“%29xadminsxx.mdb”解释为了“(xadminsxx.mdb”,当我们单击“确定”按钮
进行下载的时候,它就去寻找一个名为“(xadminsxx.mdb”的文件。

也就是说FlashGet给我们引入了歧途,它当然找不到,所以提示失败了。

不过如果提示下载失败,攻击者肯定要想采取其他的攻击方法。

由此我们可以采用另一个防范的方法,既然FlashGet去找那个名为“(xadminsxx.mdb”的文件了,我们可以给它准备一个,我们给它做一个仿真的数据库名为“(xadminsxx.mdb”,这样当入侵者想下载文件的时候的的确确下载了一个数据库回去,只不过这个数据库文件是虚假的或者是空的,在他们暗自窃喜的时候,实际上最终的胜利是属于我们的。

总结:
通过本次旁门左道保护MDB数据库文件方法的介绍,我们可以明确两点安全措施,一是迷惑法,也就是将黑客想得到的东西进行改变,例如改变MDB文件的文件名或者扩展名;二是替代法,也就是将黑客想得到的东西隐藏,用一个没有实际意义的东西替代,这样即使黑客成功入侵,拿到的也是一个虚假的信息,他们还会以为入侵成功而停止接下来的攻击。

*补充文章
今天再次看到Access数据库安全的文章,每次看到这种文章就想说上两句,流行说法有几种:
一、密码式
给数据库起一个随机复杂的名称,避免被猜到被下载,这种方式在以前很流行,因为大家都对自己的代码很有自信。

但随着错误提示对数据库地址的泄露导致数据库被非法下载,这种方式也就越来越少人用了。

二、"#"式
在数据库名称里加上#号,从URL上请求时#是请求地址和请求参数的一个分隔字符,如果知道了数据库名,直接请求的话,如:/access#.mdb,WEB服务器会认为请求的是access而不是access#.mdb,所以会提示找不到文件,但是很遗憾,URL中对于这些特殊的字符都会有一个特殊的表示方式,#的特殊表示就是%23,如/access%23.mdb,那么access#.mdb将会被下载。

还有如果用FlashGet之类的下载工具也可以直接下载。

三、ASP式
这种作法是比较专业但也是很安全的也是现在比较流行的作法,但是现在许多的人只是作了一半,只是将数据名改成ASP而以,这样的话直接用FlashGet之类的下载工具一样可以将数据库下载,这种方式的正确作法有两步:
第一步:在数据库内创建一个字段,名称随意,类型是OLE对象,内容设置为单字节型的"<%",即(ASP代码chrB(asc("<")) & chrB(asc("%"))的运行结果)
第二步:将数据库改名为ASP
这样从URL上直接请求这个数据库将会提示"缺少关闭脚本分隔符",从而拒绝下载,因为这个方式比较麻烦我在网上找了一段小代码来完成OLE对象的插入工作,只要将数据库名设置好,然后放在和数据库内一目录运行一下就可以了。

代码全文数下:
<%
db="d.mdb" '这里改成您的数据库地址
set conn=server.createobject("Adodb.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath(db)
conn.open connstr
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
%>
这段代码运行完之后将会在数据库内生成一个nodownload表,表内字段是notdown。

如果数据库内已有同名的数据表存在请将代码内的nodownload改成自己想要的数据表名即可。

四、asa式
这种方式的真谛是利用IIS对ASA文件的保护,从而使得数据库文件不能从URL上直接请求下载,但是这种方式被误解成只要将文件后缀改成ASA就可以了。

要知道IIS只是对global.asa这个文件名有请求保护,所以这种方式只能将数据库名设置为global.asa,而且要注意的是,设置成global.asa之后最好不要将其放在主机或虚拟目录的根目录里,不然会被IIS当然正常的global.asa文件进行尝试运行的。

感觉第三第四种是比较安全的,除非IIS有查看ASP或ASA源码的漏洞,否则是无法将数据库下载的。

相关文档
最新文档