据我所知,VBA Excel不支持Windows凭据管理器。因此,我想建立一个迷你版本的我自己的凭证经理。
我有一个应用程序,用户输入用户名/密码登录到服务。我想以加密的方式保存它,这样下次他们尝试在那里登录时,凭证就会被缓存(最多30天)。
加密是笔直向前,但挑战是生成一个只有特定用户才能访问的安全密钥。
我过去所做的(在其他语言中)是在服务器上安装一个带有私钥的证书,然后使用证书中的私钥作为加密密钥。在这里,虽然我无法访问应用程序正在运行的1000+用户机器,但这并不是一个可行的选择。
我很想使用windows 数据保护,但据我所知,这仅仅是.NET。这里有没有其他可行的选择?我可以使用用户SID,但系统上的所有用户都可以访问它,而且不安全。我需要一种方法来生成一个特定于安全的加密密钥,并且只对当前登录的用户可用。
发布于 2022-05-24 19:52:38
我想将此作为评论发布,但它太大了,不能发表评论。
VBA最初是在1993年用MSExcel5.0推出的,之后又进行了多次升级。VBA 6.5是在2006年前后随Office 2007发布的。2010年前后,Office 2010发布了VBA7.0,但除了64位支持之外,VBA 7中没有引入任何新特性。
如果我没有错,Windows凭据管理器是在Windows 7中引入的,我认为它是在2009年某个地方发布的。正如我前面提到的,在VBA 7中没有引入任何新特性。
为什么要上这堂历史课?这是因为VBA比Windows凭据古老,没有任何重要的升级,因此没有方法、API等来与Windows凭据交互。
就从VBA创建Windows安全密钥而言,也是不可能的。原因很简单。VBA本身并不安全。您为加密或解密而编写的任何代码都可以很容易地在VBA编辑器中看到。如果有人可以访问该代码,那么此人可以很容易地使用相同的代码绕过安全检查。即使你用密码保护VBA,它也很容易被黑。因此,不可能从VBA创建Windows安全密钥。
在这种情况下(使用VBA),解决问题的唯一解决方案是基于硬件的加密。例如,使用USB安全密钥或生物特征(指纹扫描仪、虹膜扫描仪等)。USB安全密钥插入到您计算机的USB端口,并作为额外的一层安全。这是银行广泛使用的。
https://stackoverflow.com/questions/72367150
复制相似问题