2

我正在开发一个网络应用程序。现在从安全角度来看,密码从客户端发送到服务器时需要加盐哈希。 现在我的问题是,如果我随机生成一个盐,将其附加到密码并散列组合,如何验证该密码。由于生成的盐是随机的,因此盐+密码组合的哈希每次都会不同。 如果我将与用户凭据一起生成的相同盐发送到服务器,这将暴露盐。暴露的盐会产生类似的麻烦,因为试图破解密码的人可以将暴露的盐附加不同的密码以获取哈希并匹配它。我检查了许多网站和有关堆栈溢出的问题,但没有一个完全符合我的需要。

有一些工具可以读取浏览器的内存并窃取输入的密码。因此,客户端也需要加盐哈希。

4

2 回答 2

7

您必须将盐保留在代码的服务器端。

当您对用户进行身份验证时,您会将密码发送到服务器。服务器附加盐,然后散列密码。盐应该存储在服务器端代码或数据库中的某个位置。

永远不应该将盐发送到应用程序的客户端。

于 2014-10-22T11:08:44.963 回答
6

将盐保留在数据库中没有问题。加盐只是为了确保攻击者不会使用具有大量计算哈希值的表及其相应的密码来找出受感染数据库的密码。使用盐,攻击者的唯一选择是蛮力。

因此,为了让攻击者更难暴力破解并从哈希中找出密码,我建议为每个用户使用长且安全的随机盐。

很好的解释可以在为什么我们使用“盐”来保护我们的密码?

于 2014-10-22T11:49:01.337 回答