在Access中保护数据库

介绍

在论坛上,有关访问和安全性的兴趣很大。 这是该主题的入门。

首先,如果您需要安全保护,

不要在Access中执行此操作。 安全性应始终在服务器端实现。 原因是您应该始终将安全文件与所有人隔离开,但需要安全文件才能实施安全性的文件除外。 Access的问题在于它既是服务器又是客户端。 仅在将Access用作前端和后端时才适用。 您可以将Access用作后端,将Web服务器用作前端,反之亦然,在这种情况下,您已经将安全性与客户端分离了。

现在,说了不要做。 如果您绝对必须在前端和后端都使用Access,那么您需要了解这些。

关于附件的注意事项

我在本入门教程中随附了一些概念的示例实现。 为了了解其设置方式,某些数据库必须保持不安全状态。

代码是不安全的,因此,理想情况下,您希望创建用户可以访问的数据库的编译版本。

另外,您应该将与帐户信息有关的内容拆分为一个单独的只读数据库,以供一小群人访问。 因此,所有密码请求都必须经过一个中心点。

您会注意到,我使用了主密码来加密数据。 这是为了灵活性。 虽然使用主密码更不安全,但功能是必需的。 如果使用用户密码对数据进行了加密,那么如果用户忘记了密码,您将丢失数据。

尽管可以采取一些预防措施,但由于Access被用作前端和后端,因此从理论上讲,用户可以反编译数据库的编译版本并找到主密码。 如果这不是可接受的风险,则不得使用Access。

安全码

为了保护代码,您可以执行以下任意操作:

  • 锁定VBA项目
  • 创建数据库的编译版本
  • 加密数据库

每个选项都有不同的弱点,您需要注意。

如果你

锁定VBA项目后 ,除非输入密码,否则用户无法查看代码。 但是,他们可以使用其他编辑器(例如记事本)查看数据库文件。 在这种状态下,代码为半编译格式,并且字符串仍然可读。 但是他们将无法编辑该文件; 如果他们尝试,Access将锁定数据库。 我怀疑Access使用上次修改时间的哈希值来跟踪是否有人试图在数据库外部访问它。

有了足够的知识,人们就可以反编译代码,或找到您用作密码的字符串。 有了关于文件格式的更多知识,他们可以找到Access用来跟踪上次修改日期,修改代码并重建哈希的哈希,因此Access永远不会知道它已被修改。

如果使用此方法,则将备份数据库保存在安全的地方,因为如果有人尝试在Access之外修改数据库,并且只有一个副本,则每个人都将被锁定。

如果你

创建数据库的编译版本 ,代码将是可编辑的,但是不可读。 但是,一个人可能会反编译代码。 与以前的方法一样,如果需要编辑代码,则应保留数据库的副本。

如果你

加密数据库 ,代码和数据将不可读。 但是,使用数据库的人将需要密码。 如果他们有密码,那么他们可以阅读所有内容。 如果他们愿意,可以保存数据库的未加密版本。

这些是确保代码安全的三个选项。 您可以使用一个,两个或所有选项。

保护数据

通常,如果需要保护数据安全,那是因为有些人只需要查看某些信息,而其他人则永远不应该看到。

在Access 2003中,可以选择使用用户帐户和密码来创建安全工作组文件。 问题在于,用户需要能够读取工作组文件才能使安全性起作用。 而且,如果您对文件格式足够了解,则可以阅读,更改或删除密码。

在Access 2007中,他们取消了用户级别的安全性。 因此,如果需要它,则必须在Access 2003中进行开发,或者尝试自己在代码中实现。

由于某些人不应该看到某些信息时需要用户级别的安全性,因此这为Access带来了很大的问题。 因为无论您做什么,用户都可以直接访问数据。 您唯一可以做的就是加密所有需要保持安全的数据。 这样,即使用户可以看到它,也无法读取它,除非他们具有解密它的密码。

用户级安全

当同时使用Access作为前端和后端并且需要保护数据时,您需要某种用户级别的安全性。 这包括存储帐户登录名和密码,保持安全性以及加密机密数据。

存储帐户信息和密码

这是尝试保护Access数据库中数据的最不安全的部分。 首先,您不能仅将密码存储在表中,因为用户可以读取它。 因此,您至少要做的是通过加密哈希算法来运行密码。

但是,即使您存储了哈希,用户也可以看到哪个哈希属于哪个帐户。 他们可以删除哈希或覆盖哈希。 因此,您需要一种掩盖哈希与帐户之间关系的方法。 我建议使用第二个帐户表,该帐户表将帐户ID存储为哈希或加密数据。 这样,他们将必须对要尝试找到的帐户ID进行哈希处理或加密,然后才能修改密码数据。

有几种处理帐户ID混淆的方法,每种方法都有其自身的缺点。 你可以:

  1. 哈希账户ID
  2. 使用用户的密码加密帐户ID
  3. 使用主密码对帐户ID进行加密
如果选择1,则用户可以对他们尝试查找的帐户ID进行哈希处理,因此安全性不高。 如果选择2,如果用户忘记了密码,则将失去恢复信息的能力。 如果选择3,则必须将主密码编码到VBA编码中。

但是,最大的安全漏洞是没有什么可以阻止某人删除该表并使用自己的密码重新创建它。 解决此问题的一种方法是将密码数据放入只读文件/数据库中。 但是这样做的缺点是用户无法更改自己的密码。

这是SHA2 256位加密哈希算法的链接。

http://bytes.com/topic/access/insigh...pt#post3643816 加密机密数据

由于用户可以直接访问数据,因此您必须通过对机密数据进行加密和仅在需要并授权用户时才对其进行解密来混淆机密数据。

有两种处理数据加密的方法,每种方法都有其自身的缺点。 你可以:

  1. 用用户密码加密数据
  2. 使用主密码加密数据
如果选择1,如果用户忘记密码,则将失去恢复信息的能力。 如果选择2,则必须将主密码编码到VBA编码中。

您可以实现许多可用的算法。 这是具有VBA代码的两种算法的链接。 我推荐第二个,因为它更安全并且掩盖了数据的长度。

RC4流密码 高级加密标准
附加的文件
文件类型:zip Security.zip (188.6 KB,718视图)

From: https://bytes.com/topic/access/insights/906860-securing-database-access

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值