C# 如何存储数据库密码

C# 如何存储数据库密码,c#,passwords,C#,Passwords,我相信已经有很多讨论了,但是如何在应用程序中存储密码呢?(我指的不是存储在数据库表中的用户密码,而是构建连接字符串的密码) 我看到过这样的建议,比如将其加密存储在xml文件等平面文件中,然后在运行时读取并解密。如果该应用程序在服务器上运行,这是一个非常好的选择,但是如果该应用程序将部署到最终用户的pc上呢?i、 e.平面文件将被复制到用户的pc上。这仍然是一种好的做法吗?(我的直觉是‘不’) 我知道SecurityString的存在,但后来我也在一篇文章中读到,SecurityString也很容

我相信已经有很多讨论了,但是如何在应用程序中存储密码呢?(我指的不是存储在数据库表中的用户密码,而是构建连接字符串的密码)

我看到过这样的建议,比如将其加密存储在xml文件等平面文件中,然后在运行时读取并解密。如果该应用程序在服务器上运行,这是一个非常好的选择,但是如果该应用程序将部署到最终用户的pc上呢?i、 e.平面文件将被复制到用户的pc上。这仍然是一种好的做法吗?(我的直觉是‘不’)

我知道SecurityString的存在,但后来我也在一篇文章中读到,SecurityString也很容易被破解

使用Windows7附带的密码保险库是个好主意吗?有没有什么好的例子可以通过编程来利用它?我在msdn中看到了一个示例,但首先它被标记为“windows 8”,其次,当我下载文件并在visual studio 2012 EXPRESS中打开解决方案时,它无法打开

欢迎提出任何建议……非常感谢

--更新--

比方说,该应用程序将在windows域内的少数几台PC上运行。(1) 在启动时,应用程序将执行LDAP身份验证(active directory)。只有在成功验证后,应用程序才会继续,并且(2)在后台,应用程序可以连接到数据库,获取用户输入以查询数据库,这就是db passwd开始构建连接字符串的地方(不,这不是SQL SERVER数据库,因此我认为使用windows身份验证的选项不可行,除非使用商业插件)

db驻留在同一个域中,已设置为允许特定范围的IP地址,并且启用了SSL。简而言之,从这个意义上讲,它是相当安全的。唯一不安全的是如何存储应用程序的db passwd


吸引我眼球的是Mysql Workbench。它将保存数据库连接,包括存储在密码库中的密码。这是Mysql自己实现的密码库,我非常好奇它是如何实现的。

如果应用程序将部署在您对系统安全没有控制权或几乎没有控制权的地方,例如,外部用户pc,则可能值得创建一个用户登录。根据此登录对用户进行身份验证,然后从相对安全的服务器使用您需要的任何凭据来提供数据


这并不能保证安全性,但如果您在将来某个时候需要更改密码,或者某个用户被泄露,则维护起来会更容易。

无法为用户提供密码并期望它保持安全。即使它隐藏在编译的应用程序中并使用单向散列进行散列,determined将恢复它

<>你应该考虑你的安全体系结构。

如果您正在提供应用程序所连接的服务,那么您应该考虑在公共API中提供某种更健壮的身份验证

如果连接字符串用于连接到分布式软件的另一部分,则应使最终用户可以配置密码,并将其存储在密钥环或其他加密存储中

--更新--

看起来这可能就是你想要的


您使用的是什么数据库,它位于何处?它与客户端在同一个windows域中吗?我已编辑了您的标题。请参阅“”,其中的共识是“不,他们不应该”。可能重复感谢您的回复!我已更新了我的帖子,非常欢迎您的想法。