关于前端哈希加密密码的思考
文章目录
【注意】最后更新于 May 11, 2020,文中内容可能已过时,请谨慎使用。
在前端哈希密码是否是个不错的方案?
为了防止用户或者管理员的密码泄漏或者数据库信息泄漏出去,web应用普遍采用了在后端将密码哈希以后存储在数据库中,前端提供密码,由后端进行哈希后与数据库进行对比,既然最终需要对比的是哈希过得密码,那么为什么不直接在前端将密码哈希直接交给后端存储在数据库呢?
答案其实很简单,我们将密码哈希是为了防止恶意的伪装登陆,如果我们的数据库中的密码泄漏了出去,那我们可以直接用数据库中存储的前端哈希过的密码直接登陆,后端无法进行验证,所以哈希密码的步骤要在后端进行,不只是对密码仅仅做一次哈希,如果这样同样可以使用撞库的方式,只要破坏者的算力足够.
通常我们的做法是指定自己的一套规则,可以使用加盐,即将字符串哈希过后,拼接上自定义的字符串再进行二次哈希,这样就大大的提高了安全的级别,有时对于要求更高的api
的说仅仅加盐还是不够的,还需要认证,鉴权等步骤,通常做法是使用自己生成的token
值进行校验,最好在指定的时间内让token
值更新,旧的token
将会失效.