前端密码加密的意义

先说结论,前端密码加密在安全性的意义上不大。

如果采用单纯前端加密,后台不加密的情况—在http协议下,存在中间人攻击的可能,如果密码采用前端加密而后端不对密码进行任何安全加固的话,虽然前端用户输入的明文密码通过相关加密手段(MD5,BASE64)等进行了加密,此时第三方可以通过中间人攻击截取登录表单中的加密后数据,直接采用此加密数据进行模拟登录,依旧可以正常登录系统,即使第三方不通过中间人工及截取表单数据,一旦数据库被拖库,第三方依旧可以直接使用数据库中保存的加密后密码,直接登录系统。因此单纯前端加密对于服务器系统的安全性没有任何提升。反而增加了不必要的开销。

比较好的解决方案,还是采用SSL加密,http对应的就是https,来防止中间人攻击,保护用户传输过程中的数据安全性,然后后台系统采用Bcry等加密方式,将加密后的密码保存到数据库。保证即使数据库被拖库了,第三方凭借数据库中的加密密码也无法正常登录系统。

前端加密,在某些意义上有些用途,比如通过对前端输入密码的加密,可以减少用户在不同网站相同密码,所带来的密码泄漏风险。在SSL存在代理且代理有私钥的情况下,可以一定意义上保护数据不被泄漏。

前端作为不安全、不可控的域,尽量不要在前端任何位置保存密码,可以保存token一类的凭证,在token过期时调用refresh token刷新,token失效时,调用重新登录,或者在前端有安全沙盒等保护机制,类似ios的keychain或者http only cookie这种技术来保护本地数据的安全性。

综上,正确的做法,加固后端的密码,传输采用https,采用token作为传输凭证,采用非密码登录模式,授权码、一次性短信验证、生物凭证等方式。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注