此信息存储为客户端PC上的app.config
文件中的连接字符串。
几乎在任何地方都建议使用以下方法加密连接字符串:
(ConnectionStringsSection)config.GetSection("connectionStrings").ProtectSection();
然而,一个想要获取你的数据库密码的恶意用户可以仅仅复制加密的配置文件,将其用于自己的应用程序,并进行调用。
(ConnectionStringsSection)config.GetSection("connectionStrings").UnprotectSection();
这将把连接字符串解密回明文。
有没有办法在存储在用户 PC 上的 .NET 应用程序中真正保护数据库密码?
编辑: 进一步澄清情况,我们确实是在谈论一个恶意用户(参见:竞争对手),该用户可以访问相同的PC并想要密码。
作为第二措施,我们首先加密密码,保存到 app.config
中,然后调用 ProtectSection()
。这将使 Unprotect()
输出加密的密码。但是,用户仍然可以反编译我们的代码,找出我们使用的加密密钥和算法...