2008-11-04 73 views

回答

2

DP API是在Windows上本地存储敏感数据的标准方式。你没有提到你正在使用的编程语言,但在.NET中,这是从System.Security.ProtectedData类中暴露出来的。

-2

存储用户名的最佳方法是使用纯文本。存储密码的最佳方式不是根本不存储它,而只是存储它的哈希值。当你收到一个登录尝试,你散列密码并比较两个散列。

虽然这是一个有点天真,因为它容易受哈希表(维基百科彩虹表)。无论如何,这很容易避免,为每个用户储存不同的盐。 salt只是一个随机数字或字符串,可以在散列之前连接到密码。

所以当试图登录将是业务:

  1. 搜索数据库中的哈希,并与给定登录盐。
  2. 将给定密码与先前的盐级联。
  3. 哈希连接的结果。
  4. 将计算出的散列与数据库1进行比较。如果他们匹配,授予访问权限!
+0

不幸的是,这个答案与问题无关。这不是一般的密码散列问题。他正在专门讨论从服务访问sql server的问题。 – 2008-11-05 00:02:58

+0

好吧,我的坏,应该仔细阅读 – AticusFinch 2009-12-28 14:17:46

+0

除了存储哈希不提供和大量的安全增益,因为它是用于身份验证的哈希,因此获得对哈希的访问是一样好的以获得明文访问密码。 – 2010-08-19 08:01:39

0

尽管我同意,理想情况下,您不需要存储此密码,但如果您这样做,则无需自行哈希。 CryptProtectData。阅读本文底部的警告。尽管如此,我实际上使用LsaStorePrivateData来存储密码。

5

假设.Net,你可以加密你的配置文件。见this

0

没有真正安全的方法来存储您的Windows服务的用户名和密码,因此您使用的用于访问SQL Server的帐户必须具备必要的最低数据库权限,这一点非常重要,做。

编辑:我不是说你不应该仍然加密的用户名和密码 - 你应该使用其他答案中提到的工具之一。

0

这取决于你的环境。

此服务是否在不安全的机器上运行?

我们的服务在我们的服务器机房内的服务器上运行,只有管理员才能访问。

我们将像这样的信息部署到配置文件中,因为我们使用NT身份验证来直接限制对这些文件的访问。但是,运行服务的机器只是一台服务器,而不是一台用户机器。

相关问题