我在做一个比较小的项目的时候,鉴权设计主要是听甲方的——前后端都得 hash 。
但我个人觉得觉得前端大多数情况下都没有必要做 hash ,https 和后端的加密就已经足够了。哲学上有个概念,奥卡姆剃刀原理,如无必要,勿增实体。代码设计上也有一种思想,worse is better ,我感觉有点不谋而合。
绝对的安全是很难保证的。
毕竟自己的网站设置再复杂的 hash 函数,迭代的次数再多,加再多的盐,也很难防止用户自己泄露或者其他网站的密码库泄露。不是所有人都会对每个网站设不同的用户名密码,也不是所有网站的安全性都很高,或者有些无良网站干脆就存明文。
在这种情况下,前端加 hash 唯一能提供的,就是开发人员给自己的一些合理的技术安慰,在泄密时保护了自己网站的密码,虽然这总归是好的。
所以加或者不加,很大程度上取决于你的需求。
参考《加盐 hash
保存密码的正确方式.md 》
https://github.com/su18/wooyun-drops/blob/b2a5416/papers/%E5%8A%A0%E7%9B%90hash%E4%BF%9D%E5%AD%98%E5%AF%86%E7%A0%81%E7%9A%84%E6%AD%A3%E7%A1%AE%E6%96%B9%E5%BC%8F.md