如何避免在Excel中以明文形式存储数据库密码?

时间:2019-05-17 06:57:21

标签: sql vba login

当前,我在服务器上有一个SQL数据库。访问和数据查询当前是通过Excel完成的。在SQL数据库上还会创建一个具有属性的用户表,以便每个用户仅获取此数据,并被允许获取。

到目前为止,一切正常。现在我的问题是,密码在VBA代码(在连接字符串中)中为纯文本格式,因此不太安全。现在什么是安全的解决方案?最佳选择是一个小的登录前端(用户名/密码),它会建立与数据库的连接并在usertable中检查用户。然后,前端将打开Excel文件,并将用户/密码变量传递到Excel文件中的VBA代码。这样,用户名/密码就不会存储在Excel文件中,而是在前端登录名中进行编译。

但是,除了VBA(很好的知识)之外,我还没有真正的编程知识。有建议吗?可以实现带有用户名/密码查询的“小型”登录工具吗?使用.NET,C#的最佳方法是什么? Access中的用户界面更安全吗? (遗憾的是,Excel中的VBA密码保护并不那么安全。)

1 个答案:

答案 0 :(得分:0)

用C或Java或其他任何语言编写前端都不能解决人们忘记密码的问题。如果这是问题所在,请使用密码存储(最好是使用自动类型的密码存储-这样它将自动将凭据“键入”到应用程序中)。如果您热衷于自己做这些事情之一(即构建一个安全地存储用户密码的系统),则其中许多都是开源的,因此请查看它们的工作原理。也许您可以将其转换为VBA。

如果您真的不想让用户输入密码,请使用这些工具作为如何加密密码和安全存储密码的指南。打开excel文件后,您可以对其解密。如果您走这条路,我建议您使用C之类的语言将某些功能(包括加密密钥)编译为excel可以访问以获取密码的DLL。请注意,这仍然不是太安全,因为任何可以访问DLL的人都可以访问密码。

我使用了一个称为“密码安全”的工具,该工具中包含许多用于各种应用程序(Web,数据库,终端,云等)的密码。

您仍应按照Excel VBA Password Input提示输入Excel中的凭据

其他选项可能包括“单点登录”。这基本上意味着数据库“信任”您的用户登录到客户端,并只授予它一个会话。这可以向漏洞利用开放,因此您可能真的不想这样做。