Access数据库安全浅析
2012-08-15陈永峰
张 征,陈永峰
(1.保定市国土资源局 新市区分局,河北 保定 071000;2.河北软件职业技术学院,河北 保定 071000)
随着计算机和网络技术的飞速发展,数据库在信息社会中扮演着十分重要的角色,它应用广泛,深入到各个领域。相对Sql Server、Oracle数据库来说,Access数据库在编程、使用、嵌入开发方面比较简单,因而一些信息量较少的中小型系统把Access作为首选。但Access数据库的安全性设计相对大型数据库来说是不完善的,因此在实际应用过程中需要高度重视数据库的安全漏洞,提高数据库的安全性。
1 数据库安全定义及安全体系
1.1 数据库安全概述
数据库安全包含两层含义。第一层含义是指系统运行安全,系统运行安全通常受到的威胁主要是:一些网络不法分子通过网络、局域网等途径入侵电脑使系统无法正常启动,或超负荷运行大量算法,关闭CPU风扇,使CPU过热导致损坏等破坏性活动。第二层含义是指系统信息安全,系统安全通常受到的威胁是:不法分子入侵重要的数据库,盗取或破坏系统内的重要信息。
1.2 数据库安全体系
数据库系统的安全框架可以划分为三个层次:
(1)网络系统层次:这是数据库的第一个安全屏障。目前面临的威胁主要有欺骗、重发、报文修改、拒绝服务、陷阱门、特洛伊木马等。
(2)宿主操作系统层次:操作系统是数据库系统的运行平台,为数据库系统提供一定程度的安全保护。主要安全技术有操作系统安全策略、安全管理策略、数据安全等方面。操作系统安全策略用于配置本地计算机的安全设置,包括密码策略、账户锁定策略、审核策略、IP安全策略、用户权利指派、加密数据的恢复代理以及其他安全选项。安全管理策略是指网络管理员对系统实施安全管理所采取的方法及策略。针对不同的操作系统、网络环境需要采取的安全管理策略一般也不尽相同,其核心是保证服务器的安全和分配好各类用户的权限。数据安全主要体现在以下几个方面:数据加密技术、数据备份、数据存储的安全性、数据传输的安全性等,可以采用的技术很多,主要有Kerberos认证、IPSec、SSL、TLS、VPN 等技术。
(3)数据库管理系统层次:数据库系统的安全性在很大程度上依赖于数据库管理系统。如果管理系统安全机制非常强大,则数据库系统的安全性能就较好。数据库管理系统层次安全技术在于当操作系统已经被突破时仍能保障数据的安全,这就要求数据库管理系统必须有一套强有力的安全机制。
2 Access数据库安全风险
Access数据库系统在实际应用中存在来自各方面的安全风险,由安全风险最终引起安全问题,下面从存储隐患、加密机制简单、默认权限引发的安全漏洞、平台漏洞四个方面分析Access数据库系统的安全风险。
2.1 Access数据库的存储隐患
在Access数据库应用系统中,攻击者一旦获得或者猜到数据库文件的存储路径和数据库名,后缀名为“.mdb”的Access数据库文件就会被下载,网站中的许多重要信息会一览无余。例如:对于网上商店的Access数据库,人们一般命名为store.mdb、shop.mdb 等 , 而 存 储 的 路 径 一 般 为“URL/database”。这样,只要在浏览器地址栏中敲入地址:“ URL/database/store.mdb 或者 URL/database/shop.mdb”,就可以轻易地把数据库文件下载到本地的机器中。
2.2 Access数据库加密机制简单
MS Access数据库是以MDB为文件扩展名的单个文件形式存储的,加密后的文件可以在不同计算机上以相同的密码打开,说明该数据库的密码一定存在于文件之中。通过使用UltraEdit软件对加密前后的同一个数据库文件进行对比,就可以确定加密后的密码在文件中的大概位置。Access数据库系统通过将用户输入的密码与某一固定密钥进行异或来形成一个加密串,并将其存储在*.mdb文件中从地址“&H42”开始的区域内。由于异或操作的特点是“经过两次异或就恢复原值”,因此,用这一密钥与*.mdb文件中的加密串进行第二次异或操作,就可以轻松地得到Access数据库的密码。基于这种原理,可以很容易地编制出解密程序。由此可见,无论是否设置了数据库密码,只要数据库被下载,其信息就没有任何安全性可言了。
2.3 默认权限引发安全漏洞
Admin用户是Access系统的缺省用户,如果Access系统在安装后未重新链接到某个新的工作组安全系统上,用户将以默认的Admin用户登录Access。微软系统将该Admin帐户的用户ID号设成了一个固定值,这就意味着全世界的Access系统的Admin用户在Access中都是同一个用户。如果一个用户在网络文件系统级别上获得对你的数据库系统文件的Admin权,他将以Admin用户的身份拥有对该数据库系统的所有权利。微软系统默认Users组对Access数据库有大小不一的权限,部分系统给予Users组对数据库的全部许可权。
2.4 平台漏洞
数据库系统的安全性要靠操作系统和硬件设备所提供的环境来保障,如果Access数据库系统所在的操作系统有漏洞,则在数据库系统中采取最可靠的安全措施也作用不大。操作系统中的漏洞和安装在数据库服务器上的其他服务中的漏洞可能导致未经授权的访问、数据破坏或拒绝服务。
3 数据库安全技术研究
3.1 防止Access数据库文件被下载
措施一:修改数据库文件名。下载Access数据库文件,首先必须知道该数据库文件的存储路径和文件名。如果将原本简单的数据库文件名修改得非常复杂,那些“攻击者”就要花费更多的时间去猜测数据库文件名,无形中增强了Access数据库的安全性。措施二:将Access数据库文件的后缀名由“ .mdb”改为“.asp 或 asa”等,再修改数据库连接文件(如conn.asp)中的数据库地址内容,这样一来,即使“攻击者”知道数据库文件的文件名和存储位置,也无法进行下载。措施三:将数据库保存为MDE文件。这种方法既能保护VBA代码,又能保护窗体和报表。在生成MDE文件时,Access在编译了所有模块后,随即删除了所有可编辑的源代码,并对数据库进行了压缩,其结果既保证了VB代码能够运行,也使MDE数据库可与MDB数据库一样运行,而且数据库的大小因删除源代码和压缩数据库而得以减小。
3.2 改进数据库的加密机制
通过编程改进Access数据库的加密算法。算法一:随机加密算法。该算法是一种利用随机函数的随机数序列与数据进行异或等运算,实现对数据加密的方法。在随机加密算法中,加密所用的数据是随机数且不重复使用,实现了“一次一密”的加密。对于Access数据库的敏感数据,经随机加密后,可大大增强其安全性。算法二:RSA算法。RSA算法是公开密钥密码体制中最优秀的加密算法,其理论基础是数论中的一个重要论断,即求两个大素数之积是容易的,而将一个具有大素数因子的合数进行分解却是非常困难的。
3.3 合理分配用户对数据库的所有权限
对于解决由“Admin”用户所引发的安全漏洞,方法如下:屏蔽“管理员”用户对数据库的所有权限。在管理员用户组中增加与“Admin”用户等同的新用户(如bendi), 以bendi用户登录Access,将“Admin”用户从管理员用户组撤出,屏蔽“Admin”用户对数据库的所有权限。操作完毕后,“Admin”就变成了一个普通用户,数据库系统管理员则改变为新用户(bendi),这样数据库安全系统就对所有的用户起安全防护作用了。
解决Users组所引发的安全漏洞,方法如下:屏蔽Users组对数据库的所有权限。所有Access用户都属于Users组,而Users组缺省是对数据库对象具有全部权限的,所以在分配数据库的权限之前,必须首先将数据库的所有权限屏蔽掉。
3.4 利用平台提供的安全性来实现安全防护
提高操作系统的安全性,使用尽量可靠的操作系统,及时更新补丁,补救漏洞。安装正版的质量好的杀毒软件,及时更新病毒库,有效地保护好主机。
加强客户端防护,当恶意软件或病毒攻击主机时,防护系统必须集中于保护主机系统及其数据,并停止感染的传播。这些防护和网络防护一样重要。
Access数据库已广泛应用于各行各业,给我们带来了极大的方便,虽然存在一些不足,但只要我们在实际应用中高度重视Access数据库的安全问题,风险是可以避免的。本文分析总结了Access数据库系统在实际应用过程中出现的安全漏洞,并提出了一定的防范对策,对于Access数据库安全使用有一定的针对性和指导意义,在具体实施时,应根据具体情况、环境和需求,因地制宜进行分析,采取相应措施保护数据库系统的安全。
[1]刘晖.数据库安全[M].武汉:武汉大学出版社,2010.
[2]黄明祥.信息与网络安全概论[M].北京:清华大学出版社,2010.
[3]董卫军.数据库原理与实践[M].北京:电子工业出版社,2011.
[4]唐晓波.信息安全概论[M].北京:科学出版社,2010.
[5]廖启亮.Access数据库加密系统安全性剖析及改进策略[J].中国安全科学学报,2005(5).
[6]巴尔特,谢晖,许伟.Access2007开发指南[M].北京:人民邮电出版社,2008.
[7]荣钦科技.Access2007数据库原理与技术[M].北京:清华大学出版社,2009.