我正在开发一个Web应用程序。现在从安全角度来看,密码在从客户端发送到服务器时需要盐水哈希。 现在我的问题是,如果我随机生成一个盐,将其附加到密码并散列组合,将如何验证此密码。由于生成的盐是随机的,所以哈希盐+密码组合每次都会有所不同。 如果我将与用户凭据一起生成的相同盐发送到服务器,这将暴露盐。暴露盐将产生类似的麻烦,因为尝试破解密码的人可以使用不同的密码附加暴露的盐获取哈希并匹配它。 我已经检查了很多网站,并对堆栈溢出提出了质疑,但没有任何内容符合我的需求。
有些工具可以读取浏览器的内存并窃取输入的密码。因此,客户端也需要盐渍散列。
答案 0 :(得分:3)
您必须将salt保留在代码的服务器端。
验证用户身份时,会将密码发送到服务器。服务器附加salt然后哈希密码。 salt应该存储在服务器端代码或数据库中的某个位置。
您应该从不将salt发送到应用程序的客户端。
答案 1 :(得分:2)
将盐保存在数据库上没有问题。盐只是为了确保攻击者不会使用一些具有大量计算哈希值及其相应密码的表来查找受感染数据库的密码。使用盐,攻击者的唯一选择就是蛮力。
因此,为了让攻击者更难以蛮力并从哈希中找出密码,我建议为每个用户提供长而安全的随机盐。
找到好的解释