当前位置:首页 > 电脑网络 > 8大措施帮你构筑Access安全防线
Mar10th

8大措施帮你构筑Access安全防线

diyidu 电脑网络 30 人阅读了此文 我来说两句!

8大措施帮你构筑Access安全防线

    今天下午,低一度博客受到攻击了,出现了大约一个小时的访问异常。庆幸的是,这帮无耻歹徒没能成功获取我的Access数据库,而只是象征性地给我注入了一些东西。也不知道他们是怎样注入的!想想的确不容小视这帮混蛋!不过没关系,低一度的数据库目前足够安全。利用这个“机会”,我们就来谈一谈这个问题。

    大家都知道,Asp程序使用得最多的数据库类型就是Access,如PJ-Blog、Z-Blog等。这是因为Access数据库简单小巧,直接上传到服务器上就可以用了。尽管简便,然而Access也有不足之处,其中比较伤脑筋的便是其安全性问题。大部分黑客攻击此类Asp站点,就是从获取Access数据库开始的。所以,怎样有效防范Access数据库被恶意下载,成了建站中首当其冲的话题。这里,低一度结合自己的经验、实例及大部分网上搜罗来的资料,向大家介绍几种相对有效的防范措施,希望对大家会有帮助(当然,用不着最好)。
    
    防范措施一:将数据库文件名命名得尽可能地复杂

    这是最最偷懒的方法了!所以,这个法子的安全指数也并非最高。若攻击者通过第三方途径获得了数据库的路径,你就玩完了。比如说我本来只能拿到list权,结果意外看到了你的数据库路径,那我便可冠冕堂皇地把数据库下载回去研究了。另外,数据文件通常大小都比较大,取再隐蔽的文件名也瞒不了人。呵呵,所以此法我并不提倡。

    防范措施二:修改数据库名后缀为Asa或Asp等格式

    这一做法,安全指数相对第一种行为会高一些,但同样存在着隐患。它必须配合一些必要的设置进行,如:在数据库文件中加入<%或%>标签,这样,IIS才会按Asp语法来解析,然后报告500错误,使歹徒无法下载。可是,假如只是简单地在数据库的文本或备注字段中加入<%是起不到作用的,因为Access会对其中的内容进行处理,在数据库里它会以< %的形式存在,无效哦!正确的方法应该是将<%存入OLE对象字段里,这样我们的防范目的才能达到。 
    操作方法如下: 先用notepad新建一个内容为“<%”的文本文件,然后随便取个名字存档。接着,用Access打开你的数据库文件,新建一个表,随便取个什么名字,然后在表中添加一个OLE对象的字段,并添加一条记录,插入之前建立的文本文件,要是操作正确,便可以看到一个新的名为“数据包”的记录。可以了!

    防范措施三:在数据库名称前加上“#”等特殊符号

    在数据库文件名之前加上“#”等特殊符号、然后修改数据库连接文件(如c_custom.asp)中的数据库地址,也可以起到不错的保护作用。原理是:当歹徒下载的时候,浏览器或下载工具将只能识别“#”符号前的部分地址,而对于“#”后面的名将自动去除。举个例子,假设你要下载:http://www.diyidu.cn/date/#123.mdb(如果存在的话),当你输入该地址回车,此时无论是Ie还是Flashget等,下载到的将都是http://www.diyidu.cn/date/index.htm(index.asp、default.jsp等你在IIS设置的首页文档)。
    另外,在数据库文件名中保留一些空格也能起到类似作用,由于Http协议对地址解析的非凡性,空格会被编译为"%",比如你要下载:http://www.diyidu.cn/date/123 456.mdb(123与456之间是个空格),当你输入该地址回车,此时你下载到的将是http://www.diyidu.cn/date/123%456.mdb。而我们的目录中,根本就没有123%456.mdb这个文件,所以下载也是无效的。经过这样的修改以后,即使你暴露了数据库地址,一般情况下别人也无法下载得到。所以,这项措施的安全指数较之前两法,有更高了一筹。

    防范措施四:为你的Access数据库加密

    选取“工具->安全->加密/解密数据库,选取数据库(如:ABC.mdb)”,然后按确定,接着会出现“数据库加密后另存为”的窗口,另存为:ABC1.mdb,接着原数据库ABC.mdb就会被编码,然后另存为ABC1.mdb。注意,以上动作并不是对数据库设置密码,而是对数据库文件加以编码,目的是为了防止他人使用查看工具来查阅数据库文件中的内容。接下来的操作是:首先打开经过编码了的ABC1.mdb,在打开时,选择“独占”方式。然后选取功能表中的“工具->安全->设置数据库密码”, 接着输入密码即可。这样即使他人得到了ABC1.mdb文件,没有密码也是无法看到ABC1.mdb的。最后,记得加密完要同步修改数据库连接文件哦!  
    一点小说明:由于Access数据库的加密机制相对简单,即使设置了密码,解密也很轻易。只要数据库被下载了,其信息安全依然是个未知数。所以,此法也不是最佳。

    防范措施五:将数据库放在Root目录以外或将数据库连接文件放到其他虚拟目录下

    这个方法是低一度目前正在使用的,强烈推荐之。比方说,你的WEB目录是D:\wwwroot,那么你可以将数据库放到D:\databases这个文件夹里,然后修改D:\wwwroot里的数据库连接文件,将数据库连接地址修改为:"../databases/数据库名" 的形式,这样数据库也可以正常调用,但是就无法下载了,因为它不存在于wwwroot目录里!这个方法一般不适合于购买虚拟主机的用户。当然,现在的多数虚拟主机程序在wwwroot目录平行位置,已经都有独立的databases目录了,这样子处理后相对来说是最安全的。因为在http环境下,根本没有url可以指向这个目录。除非黑了整台主机!

    防范措施六:学会使用ODBC数据源。

    在ASP等程序设计中,假如技术条件允许,应当尽量使用ODBC数据源,不要将数据库名写进程序中,否则,数据库名将跟随Asp源代码一同失密,即使你的数据库名字起得再怪异,隐藏的目录再深,也可能很轻易被下载下来。假如使用了ODBC数据源,就不会存在这样的问题了:conn.open “ODBC-DSN名” ,不过这样是比较繁琐的,目录移动的话就要重新设置,更方便的方法请看下面吧!使用ODBC数据源处理的结果有一点不好,就是效率很低,速度会变慢,迁移也不方便。因此虽然安全,也不提倡。

    防范措施七:添加数据库名的扩展映射

    这个方法就是通过修改IIS设置来实现的,适合有IIS控制权的同学使用,不适合购买虚拟主机的用户(除非技术已经设置了)。但这个方法我认为是目前最好最可靠的。只要修改一处,整个站点的数据库都可以防止被下载,而无须修改代码,即使暴露目标地址也无妨。 
    操作:在“IIS属性——主目录——配置——映射——应用程序扩展”那里添加如.mdb文件的应用解析。注意,这里的选择的DLL(或EXE等)似乎也不是任意的,选择不当,这个MDB文件还是可以被下载的,最好不要选择asp.dll等。你可以自己多测试几下。经过这样的修改后,下载数据库如:http://www.diyidu.cn/data/123.mdb,就会出现404或500等错误。

    防范措施八:懂得利用.net的优越性

    动网的木鸟就写过一个防非法下载文件的“WBAL防盗链工具”。不过它只实现了防非本地下载的,没有起到真正的防下载数据库的功能。但这个方法已经跟措施五差不多,可以通过修改.NET文件,实现本地也不能下载!

    最后总结:这几个措施中,只有七和八是统一性改的,一次修改配置后,整个站点的数据库都可以防下载,其他的几个措施就要分别修改数据库名和数据库连接文件了,比较麻烦,不过对于使用虚拟主机的朋友而言,也只能这样了!另外,其实第六个措施应该是第五个措施的扩展,可以实现非凡的功能,但如果对不支持.net的主机或怕设置麻烦的人而言,还是直接用第五种措施好了。OK,就这些吧!

本文出自:低一度,地址:http://www.diyidu.cn/post/access_safe.html,转载须注明!

to "8大措施帮你构筑Access安全防线" 引用该日志!

  1. 沉冰浮水
    #1 沉冰浮水 回复该留言 2010-3-10 21:01:13

    留爪。。

    diyidu 于 2010-3-10 21:10:47 回复
    留个毛都比爪强,不发表看法的评论都接近垃圾评论了。
    沉冰浮水 于 2010-3-10 21:15:21 回复
    其实在常去的几个博客中。我在桶哥的博客里评论是最少的。。。
    diyidu 于 2010-3-10 21:17:12 回复
    你还敢说呢,呵呵。
    爱好者博客 于 2010-3-13 8:29:19 回复
    默默的来发现新东西,然后悄悄的离开,你真狠!

  2. 金矢
    #2 金矢 回复该留言 2010-3-10 21:03:07

    支持一下。

    diyidu 于 2010-3-10 21:11:27 回复
    比下面的多了两个字。汗。

  3. 佳雨窝
    #3 佳雨窝 回复该留言 2010-3-10 21:12:36

    能明白一半,第五条比较安全。
    矛和盾的关系,如果博客流量大,就上php。

    diyidu 于 2010-3-10 21:16:13 回复
    Php+mysql对于处理大数据是有优势,但是确实没ACCESS简便。
    jiayuw 于 2010-3-10 21:31:42 回复
    确实简单,
    不然我也不会耍这个博客了,
    php要麻烦点。

  4. 康帅博
    #4 康帅博 回复该留言 2010-3-10 21:42:55

    桶哥我来也,文笔不错。

    diyidu 于 2010-3-10 23:17:13 回复
    还好吧,特意写通俗点的。

  5. 爱好者博客
    #5 爱好者博客 回复该留言 2010-3-10 21:58:16

    不错哦,学习了。桶哥不经过这一劫还写不出这么优秀的文章。

    diyidu 于 2010-3-10 23:17:57 回复
    是吗,那以后天天受攻击得了。

  6. 无名博客
    #6 无名博客 回复该留言 2010-3-11 9:40:20

    关键性的问题是他们如何入侵进去的?是通过什么手段?
    如何去堵住漏洞,否则下次还是会有安全隐患的。

    diyidu 于 2010-3-11 9:44:05 回复
    是啊,刚刚又被耍了一次了。

  7. 百年泊客
    #7 百年泊客 回复该留言 2010-3-11 12:51:12

    太高深了啊,我等菜鸟还是有些地方不明白。

    diyidu 于 2010-3-11 15:18:13 回复
    哪些地方啊?

  8. liuzm
    #8 liuzm 回复该留言 2010-3-11 14:04:06

    写得太精彩了,我一口气全部读完了。哈哈。
    谢谢一度兄分享。

    diyidu 于 2010-3-11 15:18:52 回复
    哎,我也是被逼出来的。

  9. 疯子
    #9 疯子 回复该留言 2010-3-11 14:22:04

    那我认为这个问题吗,高手是没有用的。桶哥你昨天的那些应该技术不是太高的。那天黑谷歌的那些人来你这里坐坐你就完蛋了啊。

    diyidu 于 2010-3-11 15:20:03 回复
    是呵,不过那些人也不屑黑我吧。

  10. 江流
    #10 江流 回复该留言 2010-3-11 15:45:11

    我完全没有理会这个。

    diyidu 于 2010-3-11 16:05:05 回复
    你用WP理会这个也是无用功啊。

  11. 杨帆
    #11 杨帆 回复该留言 2010-3-11 16:17:57

    说得很不错。。。

    diyidu 于 2010-3-11 16:24:04 回复
    你应该把你的意见看法都写在这里来。呵:)

  12. 山茶
    #12 山茶 回复该留言 2010-3-11 22:19:13

    以前自己用ACCESS数据库的话,总是每天都把他们下载到本地作备份,这样心里感觉踏实,也不至于出问题时备份太靠前而损失太大!

    diyidu 于 2010-3-12 0:13:24 回复
    这是笨方法,但是最牢靠安全。

  13. 吉光片羽
    #13 吉光片羽 回复该留言 2010-3-11 23:19:05

    原来如此,学习了,谢谢分享!

    diyidu 于 2010-3-12 0:14:04 回复
    呵,我也是四处学学来的。

  14. panny
    #14 panny 回复该留言 2010-3-12 9:21:30

    正准备有时间学学net。。。

    diyidu 于 2010-3-15 8:24:44 回复
    去吧,多学点东西有益无害。

  15. 飞猪
    #15 飞猪 回复该留言 2010-3-12 9:46:06

    大家都叫博主桶哥?

    diyidu 于 2010-3-15 8:26:54 回复
    呵,是因为我QQ昵称叫骑桶飞翔的缘故吧。

  16. 爱好者博客
    #16 爱好者博客 回复该留言 2010-3-13 8:27:25

    桶呀桶,你还不飞回来?你的博客都挂了。

    diyidu 于 2010-3-15 8:30:18 回复
    啥时候又挂啦?好像正常呀。

  17. Cxh
    #17 Cxh 回复该留言 2010-3-13 14:33:12

    博客出名了,那些黑客就眼红了。淡定、淡定。

    diyidu 于 2010-3-15 8:31:17 回复
    淡定不了了,如果你一直被挨打。

  18. Firm
    #18 Firm 回复该留言 2010-3-13 15:03:57

    数据库的东西一直都搞不懂。

    diyidu 于 2010-3-15 8:32:21 回复
    这个东东必须搞懂啊。不管是ACCESS还是SQL,都有安全的问题。

  19. Bee君
    #19 Bee君 回复该留言 2010-3-13 16:35:26

    我用Z-blog的时候试过一次。。wp一直很安全。。

    diyidu 于 2010-3-15 8:33:17 回复
    WP未必就平安无事,关键是防卫措施啊。

  20. otsorg
    #20 otsorg 回复该留言 2010-3-13 16:42:18

    这些东西太神奇了,太深奥了,暂时不懂。不过BZ越来越受欢迎了,哈哈。

    diyidu 于 2010-3-15 8:34:00 回复
    是吗?大家捧场呵。

  21. 大敏
    #21 大敏 回复该留言 2010-3-13 19:05:12

    学习了!~

    diyidu 于 2010-3-15 8:34:34 回复
    多谈谈看法哦。

  22. 元胜
    #22 元胜 回复该留言 2010-3-13 20:26:54

    值得学习备用哦!

    diyidu 于 2010-3-15 8:35:54 回复
    呵呵,是吗?其实我也是“偷”来的。

  23. 李超
    #23 李超 回复该留言 2010-3-13 21:10:29

    三四五,三点结合起来,那不是更牛叉啦?

    diyidu 于 2010-3-15 8:36:39 回复
    可以搭配设置,更牛X。

  24. 集趣
    #24 集趣 回复该留言 2010-3-14 12:12:12

    幸好没被整站下载哦!ASP的,很容易被搞。

    diyidu 于 2010-3-15 8:39:12 回复
    整站下载?不至于吧,ZB这么强大。

  25. 痕迹
    #25 痕迹 回复该留言 2010-3-14 16:17:02

    以前很喜欢ASP+ACCESS,现在就特喜欢PHP+MYSQL。

    diyidu 于 2010-3-15 8:40:02 回复
    各有特点吧。安全性上当然后者高些。

  26. karm
    #26 karm 回复该留言 2010-3-14 20:53:56

    太高深了,我只能祈求博客平安无事了。

    diyidu 于 2010-3-15 8:41:00 回复
    祈求只能压运气,防卫得靠技术。

  27. 医海轻舟
    #27 医海轻舟 回复该留言 2010-3-14 22:22:48

    我只有把密码设定得复杂一些了!其他的办法不会啊。

    diyidu 于 2010-3-15 8:42:22 回复
    你是说后台密码吗?还是数据库密码?其实ACCESS解密很简单的。

  28. 真爱左右
    #28 真爱左右 回复该留言 2010-3-16 15:41:22

    来学习学习。。

    diyidu 于 2010-3-16 16:30:17 回复
    多提宝贵意见呵:)

  29. 安庆法律人
    #29 安庆法律人 回复该留言 2010-3-17 11:28:43

    ASP安全性还是差一点。

    diyidu 于 2010-3-17 15:24:06 回复
    是吗?我觉得这个是相对而言吧。

  30. 朵未
    #30 朵未 回复该留言 2010-3-24 22:16:56

    要注意数据啊!WP会不会不z-blog安全吗?

    diyidu 于 2010-3-24 22:20:38 回复
    什么意思?没听懂:)

此楼已盖到第30层了,目前尚未封顶!