2005 年第 3 期 (总第 49 期)
漳州师范学报(自然科学版) Journal of Zhangzhou Teachers College(Nat. Sci.)
No. 3. 2005 年 General No. 49
文章编号:1008-7826(2005)03-0033-05
关于 ASP+ ACCESS 数据库的安全问题
林姿琼
(漳州师范 计算机科学系, 福建 漳州 363000) 摘要: 关键词: 本文对用 ASP 和 Access 构造网站中存在的普遍性安全问题进行分析,并探讨了相应的解决方法. ASP ;ACCESS ;SQL ;数据库安全 TP311.132.4 文献标识码: A
中图分类号:
1
引言
网络是没有绝对安全的,这已经从所周知. 微软推出的 IIS+ASP 的解决方案作为一种典型的服务器端
网页设计技术,被广泛应用在网上银行,电子商务,网上调查,网上查询,BBS,
搜索引擎等各种互联网 应用中. 与此同时,Access 数据库作为微软推出的以标准 JET 为引擎的桌面型数据库系统,由于具有操作 简单,界面友好等特点,具有较大的用户群体. 目前,IIS+ASP+Access 是中小型 Internet 网站的首选方 案. 但是,该解决方案在为我们带来便捷的同时,也带来了严峻的安全问题. ASP+Access 最大的安全隐患 在于 Access 数据库可以被别人下载,而现在提供的很多 ASP 空间都是只支持 Access 数据库,数据库里存 放的是后台重要信息. 这样一来,ASP+Access 的安全问题就显得很突出了.
2
安全隐患分析
首先,Access 数据库的存储隐患. 在 ASP+Access 应用系统中,如果获得或者猜到 Access 数据库的
存储路径和数据库名,则该数据库就可以被下载到本地. 其次,Access 数据库的解密隐患. 有些人认为, 把 Access 数据库进行加密,就算得到数据库也没办法得到里面的任何信息,这是一种错解. 由于 Access 数据库的加密机制非常简单,所以即使数据库设置了密码,解密也很容易. 该数据库系统通过将用户输入 的密码与某一固定密钥进行"异或"来形成一个加密串,并将其存储在*.mdb 文件中从地址"&;H42"开始 的区域内. 由于异或操作的特点是"经过两次异或就恢复原值",因此,用这一密钥与*.mdb 文件中的加 密串进行第二次异或操作,就可以轻松地得到 Access 数据库的密码. 基于这种原理,可以很容易地编制 出解密程序. 网上已经有这样的程序了,比如:accesskey.exe,2 秒钟可解出数据库密码. 由此可见,无 论是否设置了数据库密码,只要数据库被下载,其信息就没有任何安全性可言了. 再者,程序设计中的安 全隐患. ASP 代码利用表单(form)实现与用户交互的功能,而相应的内容会反映在浏览器的地址栏中, 如果不采用适当的安全措施,只要记下这些内容,就可以绕过验证直接进入某一页面. 例如在浏览器中敲 入"……page.asp?x=1",即可不经过表单页面直接进入满足"x=1"条件的页面. 因此,在设计验证或 注册页面时,必须采取特殊措施来避免此
类问题的发生.
3
提高安全性的方法
收稿日期:2005-02-20 作者简介:林姿琼 (1979- ), 女, 福建福州市人, 助教.
34
漳州师范学报(自然科学版)
2005 年
3.1
防止数据库被下载 由于 Access 数据库加密机制过于简单,因此,如何有效地防止 Access 数据库被下载,就成了提高 ASP
+Access 解决
方案安全性的重中之重. (1) 非常规命名法 防止数据库被找到的简便方法是为 Access 数据库文件起一个复杂的非常规名字,并把它存放在多层 目录下. 例如,对于网上书店的数据库文件,不要简单地命名为"book.mdb"或"store.mdb",而是要起 个非常规的名字,例如:"balkjglzq79hy.mdb",再把它放在如./hxylzqk76tt/hg768/abcd/lvccx99 之类的 深层目录下. 这样,修改数据库名,从理论上讲不一定能防止被下载,但是对于一些通过猜的方式得到 Access 数据库文件名的非法访问方法起到了有效的阻止作用. (2) 使用 ODBC 数据源 在 ASP 程序
设计中,应尽量使用 ODBC 数据源,不要把数据库名直接写在
程序中,否则,数据库名将 随 ASP 源代码的失密而一同失密. 例如: DBPath = Server.MapPath("./hxylzqk76tt