微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 如何存储数据库密码

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

我已经看到过将其加密存储在平面文件(如xml文件)中的建议,然后在运行时将其解密.如果此应用程序在服务器上运行,这是一个非常好的选择,但是如果将应用程序部署到最终用户的PC上该怎么办?即平面文件将被复制到用户的电脑上.这仍然是一个好习惯吗? (我的直觉是’不’)

我知道SecurityString的存在,但后来我在一篇文章中也读到了SecurityString也可以很容易地被分解.

使用Windows 7附带的密码存储库是个好主意吗?有没有以编程方式使用它的好例子?我在msdn中看过一个例子,但首先它标有’windows 8′,其次当我下载文件并在visual studio 2012 EXPRESS中打开解决方案时,它无法打开.

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

–update–

假设该应用程序将在Windows域中的少数几台PC上运行. (1)启动时,应用程序将执行LDAP身份验证(活动目录).只有在成功验证后,应用程序才会继续运行,并且(2)在应用程序可以连接到数据库的场景后面,用户输入来查询数据库,这就是db passwd进入游戏构建连接字符串的地方(不,这不是sql SERVER数据库所以我不认为使用Windows身份验证的选项是可行的,除非使用商业插件).

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

引起我注意的是MysqL Workbench.它将保存数据库连接,包括密码 – 存储在密码保险库中.这是MysqL自己的密码保险库实现,我很好奇它是如何完成的.

解决方法

无法为您的用户提供密码并希望它保持安全.即使它隐藏在已编译的应用程序中并使用单向散列进行散列,确定的也将恢复它.

相反,您应该考虑您的安全架构.

如果您提供应用程序连接的服务,那么您应该考虑提供某种更强大的身份验证作为公共API的一部分.

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

– 更新 –

看起来这可能就是你要找的东西;

http://www.microsoft.com/indonesia/msdn/credmgmt.aspx

原文地址:https://www.jb51.cc/csharp/98174.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐