在 Access 中“保存”时,ODBC 密码存储在哪里/如何存储?

信息安全 应用安全 密码 数据库
2021-08-17 04:29:08

我一直在开发一个使用 MS Access 和 ODBC 连接到 SQL 服务器的程序。其中一项要求是用户不需要知道连接到 SQL 服务器的密码,因此我在链接我的 SQL 表时选中了“保存密码”复选框。

有谁知道密码的存储位置以及执行此操作时的安全性?

3个回答

我想指出,问题第二部分的答案与第一部分几乎没有关系。

即使密码以超强加密方式存储(不是),这在几个方面仍然不安全。

  1. 用户可以完全、不受限制地访问数据库。即他可以做任何他想做的事情(根据共享用户的权限......用户的权限在数据库上受到限制,?)。例如访问任何未经授权的数据、删除其他用户的数据、插入垃圾等。
  2. 这听起来像是有一个共享的用户帐户,所有用户都插入了他们的 ODBC 连接......这意味着,数据库服务器无法限制用户的访问、隔离他们的数据、跟踪谁做了什么等。
  3. 在任何情况下,ODBC 密码都需要在内存中解密,允许用户获取它,然后模拟应用程序,然后再做任何他想做的事情。

你最好重新设计应用程序,使用中间层等等......
我总是觉得在同一个对话中 讨论security很奇怪......MS Access

如果您绝对无法更改架构,请考虑使用集成 Windows 身份验证,并将用户帐户(或组)绑定到 db 角色进行管理。这样,至少每个用户在服务器上都有自己的账号,可以限制访问(根据最小权限原则),没有共享账号,并且可以跟踪每个用户对数据库的操作。

可以通过在您的 Windows 机器上启动 odbcad32.exe 并与对话框交互来解决 ODBC 密码详细信息。我认为您正在寻找的详细信息可以在 ACC2000 的最后几段中找到:No Password Prompt Appears When Using Microsoft Access .MDB with ODBC

这是 google 在查看一般保存 ODBC 密码的位置时的第一个结果。

事实证明,它们以明文形式存储在 Windows 注册表中。打开regedit并查看以下内容:

HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI