存储Windows服务的用户名和密码的最佳方法是什么?

时间:2008-11-04 23:07:46

标签: sql-server security service passwords

存储Windows服务的用户名和密码的最佳方法是什么?

该服务必须能够访问远程计算机上的MS SQL Server数据库。我们必须支持MS SQL Server身份验证(混合模式)而不是NT身份验证。

7 个答案:

答案 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只是一个随机数字或字符串,您可以在散列之前连接到密码。

因此,尝试登录时的操作将是:

  1. 在数据库中搜索与给定登录名相关的哈希值和盐。
  2. 将给定的密码与之前的salt连接。
  3. 哈希连接的结果。
  4. 将计算的哈希值与数据库哈希值进行比较。如果匹配,请授予访问权限!
相关问题