什么是存储Windows服务的用户名和密码的最佳方式?什么是存储Windows服务的用户名和密码的最佳方式?
该服务必须能够访问远程计算机上的MS SQL Server数据库。我们必须支持MS SQL Server身份验证(混合模式)而不是NT身份验证。
什么是存储Windows服务的用户名和密码的最佳方式?什么是存储Windows服务的用户名和密码的最佳方式?
该服务必须能够访问远程计算机上的MS SQL Server数据库。我们必须支持MS SQL Server身份验证(混合模式)而不是NT身份验证。
DP API是在Windows上本地存储敏感数据的标准方式。你没有提到你正在使用的编程语言,但在.NET中,这是从System.Security.ProtectedData类中暴露出来的。
存储用户名的最佳方法是使用纯文本。存储密码的最佳方式不是根本不存储它,而只是存储它的哈希值。当你收到一个登录尝试,你散列密码并比较两个散列。
虽然这是一个有点天真,因为它容易受哈希表(维基百科彩虹表)。无论如何,这很容易避免,为每个用户储存不同的盐。 salt只是一个随机数字或字符串,可以在散列之前连接到密码。
所以当试图登录将是业务:
尽管我同意,理想情况下,您不需要存储此密码,但如果您这样做,则无需自行哈希。 CryptProtectData。阅读本文底部的警告。尽管如此,我实际上使用LsaStorePrivateData来存储密码。
假设.Net,你可以加密你的配置文件。见this。
没有真正安全的方法来存储您的Windows服务的用户名和密码,因此您使用的用于访问SQL Server的帐户必须具备必要的最低数据库权限,这一点非常重要,做。
编辑:我不是说你不应该仍然加密的用户名和密码 - 你应该使用其他答案中提到的工具之一。
这取决于你的环境。
此服务是否在不安全的机器上运行?
我们的服务在我们的服务器机房内的服务器上运行,只有管理员才能访问。
我们将像这样的信息部署到配置文件中,因为我们使用NT身份验证来直接限制对这些文件的访问。但是,运行服务的机器只是一台服务器,而不是一台用户机器。
感谢您的答案迄今:)
最好的办法似乎是使用,使用下面的类加密的用户名和口令的配置文件:System.Security.Cryptography.ProtectedData
这里有一个很好的背景解释:Windows Data Protection
不幸的是,这个答案与问题无关。这不是一般的密码散列问题。他正在专门讨论从服务访问sql server的问题。 – 2008-11-05 00:02:58
好吧,我的坏,应该仔细阅读 – AticusFinch 2009-12-28 14:17:46
除了存储哈希不提供和大量的安全增益,因为它是用于身份验证的哈希,因此获得对哈希的访问是一样好的以获得明文访问密码。 – 2010-08-19 08:01:39