Web服务的前线身份验证

3

我感到困惑,不知道该做什么。这是一个正常的登录场景。我将密码的哈希值存储在数据库中。[请不要考虑我使用的哈希函数]。在登录时,用户输入明文密码。现在我需要做的是将此密码哈希化,通过Web服务传递,然后我的数据库需要比较两个哈希值。现在我不知道的是:

  1. 当我在登录时使用盐(huán)哈希密码时,它是否仍然是我得到的相同值或其他值?

  2. 如果我的数据库(Sql Server 2008)无法比较两个哈希值,那么我需要做什么?不需要从数据库中获取密码。

  3. 通过Web服务传递哈希密码需要额外考虑安全性吗?

我还需要处理密码恢复,并且可以在这里使用加密/解密算法。请建议我该怎么做。

2个回答

1
为增加安全性,最好使用随机盐。
我在将密码存储在SQL服务器中时采用的保护密码的方法是:
创建来自密码的盐,然后通过用户名称和密码的串联生成哈希值。
这将使盐依赖于密码和用户名。如果您正在恢复密码,则如果凭据正确,则可以重置密码。
根据您的加密方法,使用.NET加密库创建自己的算法以使用盐加密和解密密码。

0

你必须将盐值保存到数据库中。在身份验证中,获取盐值,使用盐值对输入的密码进行哈希处理,然后与数据库中的哈希值进行比较。所有这些都可以存在于C#代码中。

您无法从哈希值中获取原始密码。您可以生成一个随机密码,并强制客户在下次登录时更改密码。

因此,我认为哈希值在在线传输时是安全的。对于网站管理员来说,即使他可以访问数据库,他仍然不知道客户的密码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接