@
Jirajine 啊,对了。。。有一点差点绕进去导致我说漏了,lz 你再仔细想一想,当中间件真的输出了你的密码请求体,请问这时候输出明文密码还是 hash 加盐之后的密码有非常大区别吗?
按照 lz 的想法,需要在前端完成加盐 hash ,那么这个“盐”必须要存在网页或 js 代码里吧,那么对于一个都有能力去攻击你系统内部中间件的人来说,浏览器 F12 看一看你前端登录时用了什么“盐”是很难的事情吗?
这时候攻击者有了盐值,也有了中间件输出在 log 里的 hash 后的值,他要做的就只是跑一个彩虹表的事情。对于不复杂的密码这么做和明文是没区别的,该撞库你还是挡不住。而对于复杂密码的确彩虹表是跑不出来的,但一般非常复杂的密码往往都是随机生成的密码 or 用户根据自己一套规则生成的动态密码。你哪怕跑出来也没办法拿去撞库
再说一下,后端密码入库前必须加盐后再 hash 才会更安全这点,原因不在 hash 上,而在于 “盐是保密的” 这一点上。后端的盐除非出了致命漏洞被黑客侵入了服务器内部,一般来说是根本不会泄露的。因为“盐保密”所以这种做法才是安全的。而在前端加盐,这个盐是明文公布给所有用户的,也就是说加盐等于没加。