@
GuuJiang @
Buges @
GeruzoniAnsasu 按个人理解简单总结一下当前的讨论情况:
1. 如果网站用户的期望是即便 A 网站被搞了(不管是被黑客入侵 /拖库,还是被内部开发 /测试或是其他人员非法利用,亦或是什么其它的方式),也不要影响到该用户在其它 B/C/D 网站的 [密码安全性] ,这种情况下,在前端就把密码进行 [hash] 处理对于该用户来说是 [有一定意义] 的。因为这种情况下,在后面的网络传输以及该网站后端拿不到用户的明文密码,不论是网站流量被解密监听还是该网站被黑了或是出现日志配置错误等问题,其它人正常情况下都很难还原出用户的明文密码(在不考虑超级彩虹表反向映射的情况下)。
但这么做(在前端就把密码进行 [hash] 处理)的好处,也基本上就这么多了——而且主要集中在那些会在密码中掺杂生日、名字拼音等隐私信息的用户上。如果不想让别人知道这些信息,最好的办法还是用密码管理器对各网站都生成并使用随机密码(虽然在实际使用上很难完全做到),一个是各网站密码不同,另一个是不暴露隐私信息。
如果网站被黑了,或是该网站后端有人通过日志等方式直接拿到了 hash 后的密码,他通过分析网站的登录接口最后还是可以进行登录并拿到用户的权限,对于该网站内用户权限的安全性并无实质性帮助。
2. 按 stackoverflow 以及本主题上面的回复来看,很多大网站并没有采用在前端对密码进行 hash 处理的方式,一方面是这样做对安全实质性的提升帮助不大,另一方面也是他们对用户的密码还有一定的企图心(也许真像上面回复中提到的“打算倒闭后拿用户密码再去其他网站撞一波库”)。