Access安全性之QA详解

在写这篇文章前首先要感谢网友:松木、zengwb、秋天、4432,谢谢他们围绕Access安全性的讨论,现摘录如下:
Q MDB我用[启动]的所有选项都 False,用封面表单启动,同个工作组的用户没授权是不能开打表修改,但他可以另建一个空数据库,进行导入或链接进行修改,如何防范?请赐教!

A 首先应该用MS Access Workgroup Administrator程序建立自己腗DW文件,比如newSystem.mdw,然后建立一个新的帐号比如newAdmin,缺省的有AMDIN和,比如GUEST帐号,然后设置各个帐号的密码。然后以newAdmin帐号登陆,建立数据库,或者导入现有的数据库中的表或窗体等进行开发。对数据库的安全性进行设置。除了newadmin帐号,将所有的组和用户对该数据库的打开权限都屏蔽掉,其它权限也宜屏蔽掉。这样的话安全了。这样的话打开该数据库只能关联上新建的MDW文件,使用newAdmin帐号才能打开。但是实际应用时当然还应该建立一个运行软件的帐号,比如newUser,(最好不要用缺省的“用户”帐号,这样关联到SYSTEM。MDW上就可以进入,即使你设置密码也不安全,因为COPY一个新的SYSTEM。MDW一样可以关联。)将newUser帐号对各个表的权限相应的设置,能读写,不能修改设计,对窗体只能运行即可,总之它是用来运行的。屏蔽一切可以修改的权限。这样的话开发和运行就是两个帐号,但是新的问题就是如果就这样交给用户使用,那么用户就必须知道newUser帐号的密码,那样的话数据就又不安全了,所以还应该用VB或者DELPHI做个套子,最简单的写上一句,运行该数据库就行了,比如:strRunShell = "c:\Program Files\Microsoft Office\Office\MSACCESS.EXE /nostartup"

strRunShell = strRunShell & "/wrkgrp c:\newSystem.mdw c:\pinewood.mde /user newUser /PWD yourpassword"
RetVal = Shell(strRunShell, vbMaximizedFocus)
当然这只是个意思,在这套子里写写别的也可以,比如检查ACCESS是否安装了,路径是不是对,是不是注册了等等。(附:用另外一个已经编译成MDE文件的数据库也可以达到如上效果)

Q 用户安全组我也用过,但是我指的安全性主要针对内部人员,外面的高手如林,根本不要谈安全性了。
ACCESS有个致命的毛病(或许我还不会用),它的安全性性能只能用在当前已设安全机制的数据库,对用户新建的数据库根本无用,用户只需用他的帐户登录ACCESS,新建一个*.MDB,再用链接功能即可把后端数据库的表都链接起来(或者前端数据库也可,因为前端数据库的表是链接再后端数据库的表上,他无非是再链接而已),他只要看懂表的内容,就可以任意修改了。
其实微软稍改ACCESS让它的安全机制适用所有的数据库而不是当前数据库,我们就不用伤脑筋去防范一些初哥儿们,作为我们使用安全机制无非也就防范这些内部使用者的非法修改、破坏而已。
所以我们需要ACCESS系统级安全机制或office developer edition也有一定的帮助

A 错错错,“用户只需用他的帐户登录ACCESS,新建一个*.MDB,再用链接功能即可把后端数据库的表都链接起来(或者前端数据库也可,因为前端数据库的表是链接再后端数据库的表上,他无非是再链接而已),他只要看懂表的内容,就可以任意修改了。”
这段话错!如果ACCESS的安全性真的象贤弟所说的,那我所贴的那些可能都是空谈了。你可能还是没有按照我说贴的实践一番。事实上是不会那样的,因为我是新创建的系统文件(即MDW文件),关联到新的系统文件创建数据库,而此数据库的打开权限只能由我指定的固定的用户比如NEWUSER才有,所以别人,不管关联到什么系统文件上都是无法用新建的数据库联结上的,如果真是那样,ACCESS早就该淘汰了!
如果你不相信我可以做一个数据库发给你,看你能不能打开。我1997年开始使用ACCESS做开发,对我所完成的各种数据库我都要反复测试的,你所说的情况如果可以,我早就积攒几十个别人开发我想破解掉的数据库了。。。。

Q 愚弟还是不明白:
小弟在文中所指的用户是指内部操作人员,我也做过很多测试:
例:我建立一个安全机制的数据库,系统创建一个MDW文件,我设定一个新的只读工作组及一个普通用户(无管理员权),把系统的用户组不设任何权限,然后退出ACCESS,选用新的MDW文件,用那个普通用户登录,建立一个新的文件,然后即可导入、链接先前那个已有安全机制的数据库.

A 你可能还是没认真读我的帖子,其实ACCESS的帮助中有更详尽的说明,非常详细。不过为了彻底让你明白,我就列个傻瓜式的步骤吧,贤弟不要介意,我也是读着傻瓜式的帮助才逐渐变聪明的。
1、先用ACCESS安装目录下的WRKGADM.EXE程序创建一个自己的MDW文件。然后关联上。
2、登陆进ACCESS后,缺省是ADMIN用户,随便建立MDB,修改ADMIN用户密码,建立一个新的帐号,比如PINEWOOD,作为我今后管理变成用,再建立一个NEWUSER,给我以后的用户用。(可以不建立任何组)
3、重新登陆,以PINEWOOD登陆,然后修改密码,即把空密码修改掉。对NEWUSER帐号也重复一次。
4、以PINEWOOD登陆,建立你所需要开发的数据库MDB源文件,起名字比如MYCODE保存后即可对安全性设置。安全性设置你应该知道在哪里吧,菜单里有。将所有ADMIN以及GUEST对MYCODE的任何权限都屏蔽掉,注意,任何权限,不管是对新表还是新模块,还是对数据库的打开权限,全去掉。然后对所有组对本数据库的全部权限也全屏蔽掉。不能遗漏。如果用户组不屏蔽掉其权限,属于这个组的ADMIN以及GUEST都可以打开数据库了。
5、然后对PINEWOOD对数据库的权限进行设置,当然,应该是所有权限都有。对NEWUSER权限进行设置,当然对所有表、查询等除了修改设计权限,读写的权限是应该有的,打开数据库的权限也是应该有的,运行的权限也应该有的。总之这个帐号是给用户用的。
6、然后做开发,建立表窗体等。你已经做过了,那就导入进来。但这时候你的数据库是安全的,别人是无法从MYCODE中得到任何东西的。除非知道密码。
7、开发完后应该是分离数据库,不止到你是不是这样做的,然后让后台的MDB数据库一样的安全。然后编译前台程序为MDE文件。
8、做个EXE文件,我在别的帖子里说了,简单的使用NEWUSER帐号打开数据库的EXE文件。是给你的用户用的,这样他们除了使用这个EXE使用数据库,没别的办法。
9、然后把MDB放到服务器端,MDE和MDW以及EXE发布给用户使用。当然MDE和MDB的关联关系是事先建立并调试好的。编程中如何处理就不用说了。
10、做到这里就足够了,对于非常需要安全的开发者来说本来是还有一些工作要做的。可参见我的别的帖子。“注意”里说了一些。那些问题都是用到了自然会用,未用到的还是没用。遇到哪个问题解决哪个,贤弟以为然否?

Q 我的天?!!难道我要同时复制三个文件,mdb & mdw & exe??? ...
先不说vb 的exe可以很方便的反编译,难道别人就不会把mdw文件先删除,然后再打开mdb文件吗?
如果说access的安全性仅限于此,那真的叫“彻底安全”了。
另外问一下,我需要更“安全”的方法有吗?前两次说的方法只要稍微懂一点电脑知识的人就可以解决了。

A 对于文件共享方式,服务器端只需要安装MDB数据库,客户端需要安装的是EXE、MDW和MDE文件。
注意:
1、是MDE文件,而不是MDB,数据库应该是放在后端的,而MDE文件是编译过的,效率高,而且即使密码被破解也不会泄露源代码。
2、如果用户删除了MDW文件,那么就根本无法访问数据库了,如果不用我的MDW文件就能访问我的MDB文件,那我谈什么安全。
3、EXE文件未必要用VB,VC、BC、DELPHI都可以,再说VB5以上的版本我还没听说可以反编译的,也没找到相应的工具。
4、目前破解ACCESS数据库的用户级安全密码的工具也不少,但是对MDW文件的用户是可以处理的,可以使之即使破解了MDW文件,也无法获得使用MDE源程序文件MDB的权限,更何况MDE源程序文件MDB他是根本无法得到的,因为根本就未发布。无处得到,除非你计算机让人随便用。所以程序是肯定安全的,数据库的数据的安全性虽是相对安全的,但是也是足够的。

时间: 2024-11-01 04:39:15

Access安全性之QA详解的相关文章

Access安全吗?——Access安全性之QA详解

access|安全|安全性|详解 Access安全吗?--Access安全性之QA详解       Access安全吗?--Access安全性之QA详解     很多朋友在使用 MDB 文件时都遇到关于ACCESS的安全性问题,这里就以 Q & A 的方式来回答大家的疑问: Q  MDB我用[启动]的所有选项都 False,用封面表单启动,同个工作组的用户没授权是不能开打表修改,但他可以另建一个空数据库,进行导入或链接进行修改,如何防范?请赐教! A  首先应该用MS Access Workgr

Access 2007功能区运用详解

一.建立功能区 一.XML 首先,要确定功能区要包含的内容,本文假设,要建立如下图所示的功能区. 其中: 打开罗斯文商贸(Access 2007 示例数据库中的 Home 窗体) 压缩和修复数据库(Access 2007 系统功能) 关闭数据库(调用回调函数,实现关闭当前数据库) 并且在数据库打开时就加载这个功能区. 为了实现上述功能,需要建立如下的 XML 内容: 1<customUI xmlns="http://schemas.microsoft.com/office/2006/01/

tomcat 和 jboss access log 日志输出详解

工作中nginx+jboss/tomcat反向代理集成,想打开后端jboss的access log, 配置在:/home/admin/wdetail/conf/tomcat-server.xml 开启日志将下面内容的注释去掉:            <valve classname="org.apache.catalina.valves.AccessLogValve" <="" div="" style="word-wrap

限制apache日志文件access.log大小方法详解

用到apache自带的rotatelogs小工具 语法如下: rotatelogs [ -l ] logfile [ rotationtime [ offset ]] | [ filesizeM ] 参数解释: -l :使用本地时间代替GMT时间作为时间基准.注意:在一个改变GMT偏移量(比如夏令时)的环境中使用-l会导致不可预料的结果. logfile:它加上基准名就是日志文件名.如果logfile中包含"%",则它会被视为用于strftime()的格式字符串:否则它会被自动加上以秒

Thinkphp的微信API-缓存access token的方法详解

本身在用微信API的类时(即大家所称的高级接口),就推荐大家根据实际环境实现缓存过程,因为获取access_token 微信官方每天只有2000次,获取一次有效时间是7200秒,这样我们就要有必要在有效时间内,重复使用access_token值,直到判断过期失效再重新获取!下面我就用TP(thinkphp3.2.3)框架写下: 一.用memcached时(注因为我下的TP版本是core版,请自行官方下载memcached类库): <?php namespace Wx; class WechatA

C++中 随机访问(random access) 流(stream) 详解

随机访问流, 使用mark(标记)标注流的位置, 包含两种方法tell和seek; tell, 是返回流mark的位置, 包含g和p两种版本.g表示get, 指输入流; p表示put, 指输出流; seek, 是跳至流mark所指的位置, 也包含g和p两种版本;seek可以指定位置, 也可以指定偏移(offset); 代码如下: /* * cppprimer.cpp * * Created on: 2013.11.28 * Author: Caroline */ /*eclipse cdt, g

如何远程调用Access数据库方法详解

  如何远程调用Access数据库方法详解: 使用了TCP/IP,ADO及XML(需要安装Microsoft XML 4.0.).分服务器和客户端两部分,服务器可以多用户同时连接.远程连接Access数据库有很多方法,我以前已经比较详细的回答过(见下面所列的5种方法),我现在这个例子属于其中的第3种方法(不需要使用RDS或Web服务器). 远程连接access数据库的几个方法: 1.建立VPN(Virtual Private Network),这样你的电脑和主机的连接就与局域网无异,然后把服务器

ActiveMQ消息传送机制以及ACK机制详解 AcitveMQ是作为一种消息存储和分发组件,涉及到client与broker端数据交互的方方面面,它不仅要担保消息的存储安全性,还要提供额外的

ActiveMQ消息传送机制以及ACK机制详解     AcitveMQ是作为一种消息存储和分发组件,涉及到client与broker端数据交互的方方面面,它不仅要担保消息的存储安全性,还要提供额外的手段来确保消息的分发是可靠的.   一. ActiveMQ消息传送机制     Producer客户端使用来发送消息的, Consumer客户端用来消费消息:它们的协同中心就是ActiveMQ broker,broker也是让producer和consumer调用过程解耦的工具,最终实现了异步RPC

rsync 服务部署详解

第1章 rsync 软件介绍 1.1 什么是rsync rsync 是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具. http://www.samba.org/ftp/rsync/rsync.html 1.1.1 全量及增量 全量:将全部数据,进行传输覆盖 增量:只传输差异部分的数据 1.2 实现增量复制的原理 Rsync通过其独特的"quick check"算法,实现增量传输数据 [root@backup ~]#man rsync Rsync  f