【发布时间】:2014-10-22 11:04:52
【问题描述】:
我正在开发一个网络应用程序。现在从安全角度来看,密码从客户端发送到服务器时需要加盐哈希。 现在我的问题是,如果我随机生成盐,将其附加到密码并散列组合,如何验证此密码。由于生成的盐是随机的,因此盐+密码组合每次都会不同。 如果我将生成的相同盐与用户凭据一起发送到服务器,这将暴露盐。暴露的盐会产生类似的麻烦,因为试图破解密码的人可以将暴露的盐与不同的密码附加到获取哈希并匹配它。 我检查了许多网站和有关堆栈溢出的问题,但没有一个完全符合我的需要。
有一些工具可以读取浏览器的内存并窃取输入的密码。因此,客户端也需要加盐哈希。
【问题讨论】:
-
不要在客户端进行密码散列。所有客户端代码都可以轻松修改,使您的“安全”变得无用。
-
很明显,你对网络安全的理解是低的。因此,您为什么要浪费时间尝试实现自己的登录系统?几乎每个 Web 开发框架都已经解决了这个问题。您应该使用现有的工具和库来解决这个问题。正如您已经证明的那样,出现这种严重错误的风险是非常非常非常高。何苦?使用现成的解决方案并继续解决您实际尝试解决的问题。
-
@spender 建议您是否有解决方案。我试图描绘这种情况,我无法透露实际的架构。已实现各种安全功能,但客户端需要加盐哈希。
-
@Yasha“客户端需要加盐哈希”?这不是“安全功能”。这是一个安全漏洞。谁在推动这个要求?他们将您/您的团队引向错误的方向。
-
"有一些工具可以读取浏览器的内存并窃取输入的密码。因此客户端也需要加盐哈希。" - 这是不合逻辑的。如果您想长时间登录,请从服务器获取身份验证令牌,而不是将密码(或其哈希)存储在客户端。
标签: javascript sha256 owasp penetration-testing saltedhash