0

0

转载:Access数据库的安全机制、隐患及改进策略

php中文网

php中文网

发布时间:2016-06-07 15:43:08

|

2199人浏览过

|

来源于php中文网

原创

【摘 要】Access数据库作为桌面数据库系统,因其操作便捷、界面友好等优点而拥有大批用户,但它也存在着不容忽视的安全问题。文章剖析了Access数据库采用的安全机制及存在的问题,提出了增强安全、消除隐患的方法。 【关键词】Access;数据库;安全机制 Acces

【摘   要】Access数据库作为桌面数据库系统,因其操作便捷、界面友好等优点而拥有大批用户,但它也存在着不容忽视的安全问题。文章剖析了Access数据库采用的安全机制及存在的问题,提出了增强安全、消除隐患的方法。
  【关键词】Access;数据库;安全机制
  
    Access是一款适合中小型企业使用的数据库系统,由于它高效、经济、实用,受到广大使用者的青睐。但是,它的加密系统一直是人们所关心的问题。就以Access97为例,其数据库文件的密码最多能设置14位,存放于这个文件头部第66个字节至第79个字节的固定序列,解密者只需要生成一个空白密码的MDB文件,把上述位置的14个字节的内容即MDB的公用密钥拷贝下来,覆盖到加密的MDB文件这个对应的位置,密码就完全消除了。在Office XP下,Access数据库的安全机制已经更为完善。除了对数据库设置密码保护,对数据库进行压缩,还可以使用用户级的安全机制,在用户级别上控制对数据库的访问。

  一、access xp数据库的安全机制

  为了避免应用程序及其数据遭到意外或故意地修改或破坏,Access XP提供了一系列安全保护措施:

  第一,可设置数据库访问密码。数据库访问密码是指为打开数据库(.MDB)而设置的密码,它是一种保护Access数据库的简便方法。设置密码后,每次打开数据库时都将显示要求输入密码的对话框,只有键入了正确的密码才能打开数据库。

  第二,可对数据库进行加密。数据库访问密码仅提供从Access界面进入数据库的安全保护,但不能防止使用其他手段来打开数据库文件。因此,常利用数据库加密作为对数据库密码等安全机制的补充。数据库加密通过压缩数据库文件来实现,压缩的同时对数据库文件起到安全保护的作用。压缩后的数据库难以用一般程序或字处理器等软件工具对其解密。但对数据库加密并不限制用户访问对象。若数据库未设置访问密码,尽管用数据库加密方法压缩了数据库文件,人们仍可在Access窗口打开该数据库,对数据库中的对象拥有完全的访问权。

  第三,可设置VBA工程密码。Access可通过为VBA工程设置密码来保护应用程序的代码。这种密码一旦设置,则打开VISUAL BASIC编辑器窗口后,只有键入了正确的密码,VBA代码才能查看或修改,但并不影响VBA代码的运行。

  第四,可将数据库保存为MDE文件。这种方法既能保护VBA代码,又能保护窗体和报表。在生成MDE文件时,Access在编译了所有模块后,随即删除了所有可编辑的源代码,并对数据库进行了压缩,其结果既保证了VB代码能够运行,也使MDE数据库可与MDB数据库一样运行,而且数据库的大小因删除源代码和压缩数据库而得以减小。

  第五,可设置用户级安全机制。用户级安全机制通过设置用户密码和权限,限制用户对数据库及其对象的访问,并建立对敏感数据和对象的不同访问级别。用户级安全机制使用扩展名为.MDW的工作组信息文件来保存信息,一个工作组信息文件定义一个工作组,用于存储用户的账号信息,包括账户名、个人ID、密码和所属的组,以及组与用户访问数据库中对象的权限。

  对于桌面上的数据库管理应用来说,Access数据库的安全机制已经可以满足使用要求了,但从根本上来说,Access数据库的安全性设计是不完善的。

  二、Access数据库存在的安全漏洞和隐患

  (一)数据库加密机制简单,易于破解

  Access数据库系统通过将用户输入的密码与某一固定密钥进行异或操作来形成一个加密串,并将其存储在MDB文件中一段特定的地址区域内。由于异或操作的特点是“经过两次异或就恢复原值”,因此,用这一密钥与*.mdb文件中的加密串进行第二次异或操作,就可以得到数据库的密码。又如本文开头所述,在Access97中,人们用密码覆盖的方法也可以轻易解除密码,Access2000的加密系统进行了较大的改进,它的密钥是按日期随机生成的,也就是说,不同的时间产生的MDB文件,其密钥是不同的,很难正确获取破解要解密的MDB文件的密钥,对于大多数用户,可以说是较为牢固了,因为在用户访问数据库的同时,加密系统还会分析散布在文件各处的校验码,检验密码是否有被非法改动,如果用密码覆盖的方法破解它,只会破坏该数据库。然而,Access2000还是把加密的密码字串放在以第66字节开始的文件区域内,该密码存储在文件头部的方式仍然是不保险的。Access2000可以让用户设定最多20位的密码,其密码区域不是连续存储的,而是隔位放置密码串,所以,密码区域有40位字节的长度,40位的字节长度内,有用的只有20个字节,再从这20个字节入手分析会发现,其中的10个字节的密钥是固定的,它们不是按日期随机生成的,所以,在一些破解软件里,可以轻易地获取奇数位的密码,最后,只剩下10个字节的密码,对于非法的用户来说,穷举法破解也不是太难,只是时间的问题了。

  (二)工作组信息文件带来安全隐患

  Access2000有一个默认名为system.mdw的工作组信息文件,该文件存放了Access数据库的全部安全信息,包括用户账号和组账号。需要注意的是,该System.mdw工作组信息文件是不安全的。因为在安装Access的同时,安装程序自动将默认的工作组定义在其创建的工作组信息文件中。在用户还没有使用”工具组管理器”指定其他的工作组信息文件之前,再次启动Access时,都使用默认的工作组信息文件。默认状态下原System. mdw工作组信息文件之所以不安全,是因为它的工作组ID是空白的,任何人都可以获得该工作组信息文件定义的管理员账号,具有访问数据库的各种权限,这对数据库来讲是很不安全的。

  (三)管理员用户引发安全漏洞

68爱写
68爱写

专业高质量AI4.0论文写作平台,免费生成大纲,支持无线改稿

下载

  “管理员”用户是Access系统的缺省用户,也就是说,Access系统将以默认的“管理员”用户登录Access,而微软将其用于标记该“管理员”账户的用户1D号设成了一个固定值,这就意味着全世界的Access系统的“管理员”用户在Access中都是同一个用户,这样,问题就出现了——如果一个未联入你的工作组安全系统的用户在网络文件系统级别上可以获得对你的数据库系统文件的管理权,他将以“管理员”用户的身份拥有对该数据库系统的所有权利!由Access本身建立起来的第二级安全机制将不起任何作用。这种情况很容易发生—工作组用户只要在他的计算机上重新安装一次Access软件,他将会轻而易举地避开你设署的安全系统的防护,以“管理员”用户登陆并操作工作组中任何数据库系统。

三、改进数据库安全机制的对策

  针对Access数据库存在的安全漏洞和隐患,应采取如下改进措施:

      (一)通过编程改进Access数据库的加密算法

  这里介绍一种在VB中设置Access密码的解决方案,在VB中,用关键字ALTER DATABASE设置、修改数据库密码。使用该方法之前,应先设置对Microsoft ADO Ext 2.5 for DDL and Security库的引用。具体语法是:

  ALTER DATABASE PASSWORD New Password  Old Password
  第一次设置数据库密码时,使用NULL关键字作为ALTER DATABASE语句中的Old Password参数,其代码如下:
  Dim  objConn  As  ADODB.connection
  Dim  strSetPassword  As  String
  ·创建SQL串以初始化一个数据库密码
  StrSetPassword="ALTER DATABASE PASSWORD NewPassword NULL;"
  Set  objconn. =New ADODB .Connection
  ’设置数据库的打开方式为独占
  objconn.Mode=adModeShareExclusive
  ·打开数据库,path为数据库的路径
  objconn.Open "Provider=Microsoft.Jet.OLEDB.4.0; DataSource=Path;"
  ’执行SQL语句设置数据库密码
  objconn.Execute (strSetPassword)
  修改数据库密码时,首先要用旧密码登录数据库,然后再更改密码。其代码如下:
  ·用旧密码登录
  objconn.Mode=adModeShareExclusive
  objconn.Provider="Microsoft.Jet.OLEDB.4.0"
  objconn.properties("Jet.OLEDB:Database Password")="Oldpassword"
  objconn.Open "DalaSource=Path "
  ’修改密码
  StrSetPassword=" ALTER DATABASE PASSWORD NewPassword"
  objconn.Execute (strSetPassword)
  删除数据库密码操作类似于修改密码过程,只需使用NULL关键字作为ALTER DATABASE语句的NewPassword参数即可。

  (二)消除由System.mdw文件带来的隐患

  可以使用工作组管理员程序来对工作组信息文件进行管理。数据库管理员有权增加、删除组和用户。最好把开发同一个项目的成员设计成为一个组。Access将用户归类到各种组中,所以数据库安全管理可以得到极大的简化,也就是为组而不是为单个用户指定权限,然后通过将用户添加到组中或从组中删除的方式来更改单个用户的权限。对于处于同组的用户授予新权限,只要执行一个操作,即可对该组账号授予新的权限。为了数据库的安全,对不再使用数据库的用户和组,应做到及时删除。

  (三)消除由“管理员”用户引发的安全漏洞

  对于解决由“管理员”用户所引发的安全漏洞,笔者的基本思路是屏蔽“管理员”用户对数据库的所有权限,首先,在管理员用户组中增加一个新的与“管理员”用户等同的新用户,例如为mine,然后以这个新用户登录Access,从管理员用户组将“管理员”用户撤出,并屏蔽掉“管理员”用户对数据库的所有权限,这样,“管理员”用户就成为了一个普通用户,实际的数据库系统管理员则变为新用户(mine),而你的数据库安全系统就对所有的用户起安全防护作用了。

  四、结语

  Access数据库已广泛应用于各行各业,给我们带来极大的方便,它虽然存在一些不足,但是只要我们在实际应用中多考虑Access数据库的安全问题,风险还是可以避免的。本文中分析的对数据安全性的操作在数据库的访问中起着一定的作用,但是,尽管人们想到了种种办法来尽量维护自己的数据库安全,也总是不断有漏洞被发现。所以,为了确保数据库的安全,数据的备份与恢复是必不可少的最后一道防线。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Golang 生态工具与框架:扩展开发能力
Golang 生态工具与框架:扩展开发能力

《Golang 生态工具与框架》系统梳理 Go 语言在实际工程中的主流工具链与框架选型思路,涵盖 Web 框架、RPC 通信、依赖管理、测试工具、代码生成与项目结构设计等内容。通过真实项目场景解析不同工具的适用边界与组合方式,帮助开发者构建高效、可维护的 Go 工程体系,并提升团队协作与交付效率。

1

2026.02.24

Golang 性能优化专题:提升应用效率
Golang 性能优化专题:提升应用效率

《Golang 性能优化专题》聚焦 Go 应用在高并发与大规模服务中的性能问题,从 profiling、内存分配、Goroutine 调度、GC 机制到 I/O 与锁竞争逐层分析。结合真实案例讲解定位瓶颈的方法与优化策略,帮助开发者建立系统化性能调优思维,在保证代码可维护性的同时显著提升服务吞吐与稳定性。

2

2026.02.24

Golang 面试题精选:高频问题与解答
Golang 面试题精选:高频问题与解答

Golang 面试题精选》系统整理企业常见 Go 技术面试问题,覆盖语言基础、并发模型、内存与调度机制、网络编程、工程实践与性能优化等核心知识点。每道题不仅给出答案,还拆解背后的设计原理与考察思路,帮助读者建立完整知识结构,在面试与实际开发中都能更从容应对复杂问题。

1

2026.02.24

Golang 运行与部署实战:从本地到云端
Golang 运行与部署实战:从本地到云端

《Golang 运行与部署实战》围绕 Go 应用从开发完成到稳定上线的完整流程展开,系统讲解编译构建、环境配置、日志与配置管理、容器化部署以及常见运维问题处理。结合真实项目场景,拆解自动化构建与持续部署思路,帮助开发者建立可靠的发布流程,提升服务稳定性与可维护性。

3

2026.02.24

Golang 疑难杂症解决指南:常见问题排查与优化
Golang 疑难杂症解决指南:常见问题排查与优化

《Golang 疑难杂症解决指南》聚焦开发过程中常见却棘手的问题,从并发模型、内存管理、性能瓶颈到工程化实践逐步拆解。通过真实案例与调试思路,帮助开发者定位问题根因,建立系统化排查方法。不只给出答案,更强调分析路径与工具使用,让你在复杂 Go 项目中具备持续解决问题的能力。

1

2026.02.24

Golang 入门学习路线:从零基础到上手开发
Golang 入门学习路线:从零基础到上手开发

Golang 入门路线涵盖从零到上手的核心路径:首先打牢基础语法与切片等底层机制;随后攻克 Go 的灵魂——接口设计与 Goroutine 并发模型;接着通过 Gin 框架与 GORM 深入 Web 开发实战;最后在微服务与云原生工具开发中进阶,旨在培养具备高性能并发处理能力的后端工程师。

0

2026.02.24

中国研究生招生信息网官方网站入口 研招网网页版在线入口
中国研究生招生信息网官方网站入口 研招网网页版在线入口

中国研究生招生信息网入口(https://yz.chsi.com.cn) 此网站是研究生报名入口的唯一官方网站

93

2026.02.24

苹果官网入口与在线访问指南_中国站点快速直达与iPhone查看方法
苹果官网入口与在线访问指南_中国站点快速直达与iPhone查看方法

本专题汇总苹果官网最新可用入口及中国站点访问方式,涵盖官网直达链接、iPhone官方页面查看方法与常见访问说明,帮助用户快速进入苹果官方网站,便捷了解产品信息与官方服务。

14

2026.02.24

Asianfanfics官网入口与访问指南_AFF官方平台最新登录地址
Asianfanfics官网入口与访问指南_AFF官方平台最新登录地址

本专题系统整理Asianfanfics(AFF)官方网站最新可用入口,涵盖官方平台最新直达地址、官网登录方式及中文访问指引,帮助用户快速、安全地进入AFF平台浏览与使用相关内容。

15

2026.02.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号