我确信已经有很多讨论了,但是如何在应用程序中存储密码呢?(我的意思不是将用户密码存储在数据库的表中,而是用于构建连接字符串的密码)
我看到过类似将其加密存储在诸如xml文件之类的平面文件中,然后在运行时读取和解密。如果这个应用程序在服务器上运行,这是一个非常好的选择,但是如果该应用程序将部署到最终用户的计算机上怎么办?也就是说,平面文件将被复制到用户的计算机上。这仍然是一个好的做法吗?(我的直觉是'否')
我知道SecurityString的存在,但是我也在一篇帖子中读到过,SecurityString也很容易被攻破。
使用Windows 7附带的Password Vault是否是一个好主意?有没有利用编程实现的好例子?我在MSDN中看到了一个例子,但首先它带有“Windows 8”的标签,其次当我下载文件并在Visual Studio 2012 Express中打开解决方案时,它无法打开。
欢迎任何建议...非常感谢。
--更新--
假设应用程序将在Windows域内的一些计算机上运行。(1)在启动时,应用程序将进行LDAP身份验证(Active Directory)。只有在成功验证后,应用程序才会继续执行,并且(2)在幕后,应用程序可以连接到数据库,接受用户输入查询数据库,这就是数据库密码发挥作用以构建连接字符串的地方(不是SQL Server数据库,因此我认为使用Windows身份验证的选项不可行,除非使用商业插件)。
数据库位于同一个域中,并已设置为允许某些范围的IP地址,并启用了SSL。简而言之,在这个意义上,它是相当安全的。唯一尚未安全的部分是如何存储应用程序的数据库密码。
引起我的注意的是Mysql Workbench。它将保存数据库连接,包括密码——存储在密码保险箱中。这是mysql自己实现密码保险箱的方式,我非常好奇它是如何完成的。
我看到过类似将其加密存储在诸如xml文件之类的平面文件中,然后在运行时读取和解密。如果这个应用程序在服务器上运行,这是一个非常好的选择,但是如果该应用程序将部署到最终用户的计算机上怎么办?也就是说,平面文件将被复制到用户的计算机上。这仍然是一个好的做法吗?(我的直觉是'否')
我知道SecurityString的存在,但是我也在一篇帖子中读到过,SecurityString也很容易被攻破。
使用Windows 7附带的Password Vault是否是一个好主意?有没有利用编程实现的好例子?我在MSDN中看到了一个例子,但首先它带有“Windows 8”的标签,其次当我下载文件并在Visual Studio 2012 Express中打开解决方案时,它无法打开。
欢迎任何建议...非常感谢。
--更新--
假设应用程序将在Windows域内的一些计算机上运行。(1)在启动时,应用程序将进行LDAP身份验证(Active Directory)。只有在成功验证后,应用程序才会继续执行,并且(2)在幕后,应用程序可以连接到数据库,接受用户输入查询数据库,这就是数据库密码发挥作用以构建连接字符串的地方(不是SQL Server数据库,因此我认为使用Windows身份验证的选项不可行,除非使用商业插件)。
数据库位于同一个域中,并已设置为允许某些范围的IP地址,并启用了SSL。简而言之,在这个意义上,它是相当安全的。唯一尚未安全的部分是如何存储应用程序的数据库密码。
引起我的注意的是Mysql Workbench。它将保存数据库连接,包括密码——存储在密码保险箱中。这是mysql自己实现密码保险箱的方式,我非常好奇它是如何完成的。