我读过这些:
Is it worth hashing passwords on the client side
Password encryption at client side
...我仍然认为在客户端散列密码更好。让我解释一下。
引用的第一篇文章主张您应该使登录页面独立,因为无法信任客户端中使用的整个代码库。我认为这是有道理的。
如果有意义,您如何信任服务器端使用的整个代码库?
上面的许多上述答案声称“不要在客户端散列,因为TLS存在”。这对于防止密码被嗅探是正确的,但如果它与我们潜在的邪恶服务器端代码有关则根本不相关。
此外,如果密码已经哈希,我认为服务器端没有任何理由对其进行哈希处理。如果您的服务器被破解,您就完成了 - 无论密码如何 - 但是破解者无法在其他任何地方使用获取的密码。
但由于我找不到这样的答案,我的陈述似乎是根本错误的。我错过了什么?
答案 0 :(得分:5)
如果您认为哈希客户端和服务器端与现代密码散列算法像PBKDF2,BCrypt,SCrypt,或Argon2高工作因子/迭代次数比较好,那么我同意。
如果您认为哈希只是客户端更好,那么我对您的威胁模型有严重保留。
存在威胁,服务器端的哈希密码可以防范,客户端可以防御的威胁;这里有一个简短的清单: