在Access客户端对数据进行保护的方法

小编给大家整理了一些如何在Access客户端对数据进行保护的一些方法,包括多种方式隐藏表对象,修改链接表路径中的计算机名为IP地址等几种方法。

通常来说我们在使用Access开发完一个程序后,可以通过将其编译成mde文件或accde文件来保护我们的劳动成果,这样别人就看不到其中的源代码了。还有Access有个问题就是可以通过Shift键忽略掉启动设置,一旦使用Shift键打开数据库后,所有的表和查询都暴露在外面了,打开表后就能对数据进行任意的修改、删除。

在本文中接下来说明了几种从客户端中保护数据的方法,及其相应的优缺点,而在实际当中我们应该使用多种方式进行组合使用,以提升数据的安全性,至少不应该明显暴露,从而达到保护数据的目的。

一、隐藏表对象

1、 设置隐藏属性:选中表对象,然后点击工具栏中的属性按钮,或者在表对象中单击右键,在弹出的快捷菜单中选择属性,打开对象属性对话框,将其中的“隐藏”复选框选中。此方法的缺点是过于简单,只要通过菜单——工具——选项,在其中的“视图”选项卡中将“显示隐藏对象”勾选,这个方法就形同虚设了。

2、将表名加上USys前缀,以此前缀开头的对象,都会被视作系统对象,而默认情况下系统对象是被隐藏不显示的。缺点也和前面的隐藏方式一样,将“显示系统对象”勾选后,就没什么效果了。

3、将表名加上~TMPCLP前缀,此前缀为已删除对象的命名前缀,但由于它的Flags为0,所以即使压缩后也并不会被真正删除掉。这种方法隐藏的比较彻底,除非将名字改回来,否则是在数据库窗口中看不到这个表的。但相应的来说取消隐藏也不复杂,只要知道了表名(从系统表MSysObjects中可以看到),用一个操作为Rename的宏就可以让它显形。4、用DAO方法将表对象的Attibutes属性设为1(即常量dbHiddenObject),这种方式需要通过编程才能实现,相应的取消隐藏也需要通过编程来处理。
隐藏:CurrentDb.TableDefs(“表名”).Attibutes=dbHiddenObjecct
取消隐藏:CurrentDb.TableDefs(“表名”).Attibutes=0

前面说到的方法都是对表的隐藏,但对于查询对象却没有什么好的隐藏方法,只能尽量少的使用查询对象,而把查询直接写在窗体记录源属性中或者代码中了,否则光隐藏表,还是能够从查询中对数据进行修改。

二、隐藏文件夹,替换成IP地址

当使用Access数据库文件作为后台数据库时,我们必须将其放在共享文件夹中才能让其它计算机访问到,另外由于对数据库的访问需要有读写权限,我们又不能将其设为只读。基于这种情况后台数据库就处于很不安全的情况,所以我们需要尽量隐藏数据库的位置。一般来说做法有两种:

一是将共享文件夹的共享名后面加一个美元符号($),这样别人就不能从网上邻居中看到这个文件夹。

二是使用链接表向导创建的链接表,其链接路径都是类似于:

\计算机名称\共享文件夹名称\后台数据库文件.mdb

我们可以用代码将其替换成相应的IP地址:

\192.168.1.1\共享文件夹名称\后台数据库文件.mdb

使用DAO方式修改链接表的Connect属性的相关示例代码:

Dim tdf As DAO.TableDef
For Each tdf In CurrentDb.TableDefs
If tdf.Connect <> “” Then
tdf.Connect = Replace(tdf.Connect, “\计算机名”, “\192.168.1.1”)
tdf.RefreshLink
End If
Next

三、表链接到另一个空数据库

此方法用于使用前后端的情况,创建一个后台数据库的副本,里面不存放任何数据,在退出时将链接表的链接来源修改为此副本,重新登录时再将链接表的链接源重置为正确的后台数据库。修改链接表来源的方法也就是修改链接表的Connect属性,具体代码实现和方法二中的类似。

四、退出时删除链接表

此方法同样用于使用前后端的情况,在登录时自动创建链接表,在退出时再将链接表全部删除。可以在后台数据库中创建一个特定名称的表,表中存放了那些需要链接的所有表的名称,这样启动时就可以通过读取这个表中的记录来自动创建链接表。

发布了10 篇原创文章 · 获赞 8 · 访问量 3831

猜你喜欢

转载自blog.csdn.net/weiisiceman/article/details/89319729