存储Windows服务的用户名和密码的最佳方法是什么?
该服务必须能够访问远程计算机上的MS SQL Server数据库。我们必须支持MS SQL Server身份验证(混合模式)而不是NT身份验证。
答案 0 :(得分:5)
假设.Net,您可以加密配置文件。请参阅this。
答案 1 :(得分:2)
DP API是在Windows上本地存储敏感数据的标准方法。您没有提到您正在使用的编程语言,但在.NET中,这是从System.Security.ProtectedData类公开的。
答案 2 :(得分:0)
虽然我同意,理想情况下,您不需要存储此密码,但如果您这样做,则无需自行哈希。 CryptProtectData。阅读本文底部的警告。虽然,我实际使用LsaStorePrivateData来存储密码。
答案 3 :(得分:0)
没有真正安全的方法来存储您的Windows服务的用户名和密码,因此,您用于访问SQL Server的帐户必须获得必要的最低数据库权限才能执行所需的操作
编辑:我并不是说不应该仍然加密用户名和密码 - 您应该使用其他答案中提到的工具之一。
答案 4 :(得分:0)
这取决于您的环境。
此服务是否在不安全的计算机上运行?
我们的服务器在我们服务器机房内的服务器内运行,只有管理员可以访问。
我们将这样的信息部署到配置文件中,因为我们使用NT身份验证来直接限制对THOSE文件的访问。但这是运行服务的机器只是服务器而不是用户机器的情况。
答案 5 :(得分:0)
感谢目前为止的答案:)
最好的方法似乎是使用一个配置文件,使用以下类加密用户名和密码:System.Security.Cryptography.ProtectedData
这里有一个很好的背景解释:Windows Data Protection
答案 6 :(得分:-2)
存储用户名的最佳方式是纯文本。存储密码的最佳方法不是存储密码,而只存储密码。当您收到登录尝试时,您将对密码进行散列并比较两个哈希值。
但这有点天真,因为它很容易受到哈希表(维基百科彩虹表)的影响。无论如何,这很容易避免,为每个用户存储不同的盐。 salt只是一个随机数字或字符串,您可以在散列之前连接到密码。
因此,尝试登录时的操作将是: