2

我有一个受密码保护的 mdb 访问权限,但可以在 1 秒内通过在 google 中找到的免费工具轻松破解。除了支付一些昂贵的工具外,有没有什么好的方法可以保护 ms 访问数据库文件?我正在考虑对其进行加密,然后通过 dll 对其进行解密,获取一些数据,并将其传递给第三方应用程序,然后在连接关闭时再次加密文件。

如果有人愿意评论这种方法的谬误,或者有其他一些资源、工具等,那就太好了。

谢谢 :)

4

7 回答 7

2

Access是老数据库,为什么不是SQL Express 2005(witch是免费的)?您将获得更多关于安全性的信息,并且在您的应用程序中,您在连接中使用了一个没有人知道也看不到它的用户/密码……如果他们尝试打开 SQL,他们只会看到数据库名称,并且没有别的(记住使用 SQL 身份验证而不是 Windows 身份验证)

如果您使用的是 .NET,在您的安装程序中,您可以告诉仅在安装 SQL 2005 Express 之后安装您的应用程序,或者如果使用其他语言,请使用 InstallShield、FinalBuilder 等来执行相同的操作...

:)

当我这样做时,您认为我“挣扎”... Access 已经开始响应时间很差,一个表中有超过 30k 行(来自 Microsoft 的引用),如果您要创建一个层来加密/解密数据.. .您的应用程序将从缓慢变为根本无法运行...这是个好主意吗?

于 2009-05-07T07:57:13.083 回答
2

我完全赞成在合适的地方使用 Jet,但是当您开始担心密码保护数据超出了 NTFS 安全性和 Jet ULS 所能提供的范围时,您就处于需要使用不同数据存储的领域。

但是让我这样说:

安全不是一个技术问题——它是一个人的问题。没有安全措施可以保护您免受希望您生病的具有管理员权限的用户的侵害。您始终必须足够信任他人,才能授予他们查看和编辑您的数据的权限。很多时候,重点是如何让未经授权的用户远离您的数据,而不是设计您的应用程序以保护您的数据免受授权用户可能造成的损害。前者非常简单,而后者需要非常仔细地注意安全设置,以及设计应用程序的方式。

最后,您必须相信人们会负责任地行事,而 Jet 或 SQL Server 无法帮助您做到这一点。

于 2009-05-07T23:08:41.393 回答
1

从 MDB 格式更新为 ACCDB (Access2007) 格式怎么样?

Access 2007 安全性入门

“Office Access 2007 中的加密工具结合并改进了两个较旧的工具——数据库密码和编码。当您使用数据库密码加密数据库时,您会使其他工具无法读取所有数据,并强制用户输入密码以使用数据库。Access 2007 中应用的加密使用了比 Access 早期版本中使用的更强的算法..."

于 2009-05-07T08:32:48.940 回答
1

如果您只是想保护数据,或者您是否想保护其他东西,例如专门说 VBA 代码,我不清楚阅读您的帖子。您说您有一个 mdb 文件,但您使用的是 Access 2003、2007 还是其他版本?您/您是否计划在 Intranet 站点上部署 Access 解决方案?(对于我下面的评论,我将假设您是)。

我同意其他海报的观点,如果您有机会在部署基于 Access 的解决方案之前考虑其他解决方案,那么您应该这样做。但是,如果您无法避免使用基于 Access 的解决方案,我想分享以下建议和/或评论。

  1. 如果您正在使用 Access 2003,那么您可能需要考虑用户和组级别的安全性(用户/组级别的安全设置和配置在 Access 2007 (accdb) 格式数据库中不可用,但是 Access 2007 将识别来自 mdb 文件的用户/组权限. 使用用户/组级别的安全性,您可以根据定义的用户和工作组限制对数据库的访问。有关更多信息 - [ http://office.microsoft.com/en-us/access/HP051882261033.aspx][1]

  2. 考虑拆分您的数据库(将您的数据与您的应用程序对象(例如表单、报告)分开)和/或创建限制可用对象的不同版本。

  3. 保留设计大师和生产复制品。这与之前的评论一致,其中的想法是并非所有东西都摆在桌面上。您可能想要查看适用于 2003 和 2007 的 Access Developer Extensions(如果您还没有的话)(可从 Microsoft 免费下载和安装)。

  4. 尽可能采用阻止和/或限制员工或同事访问的政策(我再次假设您正在公司 Intranet 上进行部署)

  5. 编码您的数据库。这将使您的表的属性信息、VBA 代码更难检索,因为数据库将被压缩,并且任何设计级别的信息都将被删除或更难访问。

  6. 最后,如果您有时间、资源和/或附近的图书馆/书店有可用的副本,我建议您查看Alison Balter 掌握的 Microsoft Office Access 2003,查看开发多用户和企业应用程序部分,其中有关于安全的部分。ACCESS 2007 更新:Alison Balter 掌握 Microsoft® Office Access 2007 开发

于 2009-05-07T09:34:19.620 回答
0

以加密格式保存数据将是一种解决方案。如果密码“失败”,破解者也必须解密数据

于 2009-05-07T07:53:51.797 回答
0

无论您使用什么方法,知识渊博的人都可以破解。

这真的取决于数据的价值:如果它真的很有价值,我会使用不同的模型,比如将数据库放在互联网上的服务器后面。然后你可以限制查询的数量,以及过滤误用。

如果可以追踪泄漏或使用有限,则最好不要使用许可协议保​​护数据。至少那时你可能有办法弥补你的损失。请注意,OED最近取消了其复制保护。

还要考虑未来:一些网络管理员在 10 年后可能需要合法地访问数据,使用简单的密码将表明数据应该受到保护,但仍然允许规避。

于 2009-05-07T08:01:45.880 回答
0

对于桌面应用程序,我建议您走Sql Server Compact Edition (SQLCE)的路线。或者,如果您有一点钱,VistaDB(与 SQLCE 不同,它支持存储过程、视图和触发器)。您将获得更好的安全性、更好的性能、更少的维护和损坏问题以及更轻松的部署。

于 2009-05-07T08:39:17.770 回答