我相信已经有很多讨论了,但是如何在应用程序中存储密码?(我的意思不是存储在数据库表中的用户密码,而是建立连接字符串的密码)
我已经看到了一些建议,例如将其加密存储在诸如 xml 文件之类的平面文件中,然后在运行时读取它+解密它。如果这个应用程序在服务器上运行,这是一个很好的选择,但是如果应用程序将被部署到最终用户的电脑上呢?即平面文件将被复制到用户的电脑。这仍然是一个好习惯吗?(我的直觉是“不”)
我知道 SecurityString 的存在,但是我也在一篇文章中读到 SecurityString 也可以很容易地被破解。
使用 Windows 7 附带的 Password Vault 是个好主意吗?有没有以编程方式使用它的好例子?我在 msdn 中看到过一个示例,但首先它被标记为“windows 8”,其次当我下载文件并在 Visual Studio 2012 EXPRESS 中打开解决方案时,它无法打开。
欢迎任何建议......非常感谢。
- 更新 -
假设该应用程序将在 Windows 域内的几台 PC 上运行。(1) 在启动时,应用程序将执行 LDAP 身份验证(活动目录)。只有在认证成功后,应用程序才会继续执行,并且(2)应用程序在后台可以连接数据库,接受用户输入来查询数据库,这就是 db passwd 发挥作用来建立连接字符串的地方(不,这不是 SQL SERVER 数据库,所以我认为使用 Windows 身份验证的选项不可行,除非使用商业插件)。
db 位于同一个域中,并且已设置为允许特定范围的 IP 地址,并且启用了 SSL。简而言之,从这个意义上说是相当安全的。唯一不安全的是如何存储应用程序的 db passwd。
引起我注意的是 Mysql Workbench。它将保存数据库连接,包括存储在密码库中的密码。那是mysql自己实现的密码库,我很好奇它是怎么做的。