问题描述想知道用户密码应该是明文传到后端计算hash验证还是先计算hash再传到后端验证?问题出现的环境背景及自己尝试过哪些方法略相关代码// 请把代码文本粘贴到下方(请勿用图片代替代码)略你期待的结果是什么?实际看到的错误信息又是什么?如题
4 回答
三国纷争
TA贡献1804条经验 获得超7个赞
桃花长相依
TA贡献1860条经验 获得超8个赞
不知道谁给上面的点的踩,这里补充一点儿内容。
首先,作为开发者,不应该知道用户的原文密码。犹如上面说的
前端计算和后台计算两种方式都有,但后台计算的方式显然更加不安全
。
的确,从安全的角度来说,如果是 http
那么用户在向后台发送数据时如果有第三方介入,就已经不安全了,第三方就可以在这里面拿到密码原文了,但是如果在前端使用 md5 + salt 就已经确保了在传输过程中第三方无法完全取得用户的密码原文,因为是hash算法,即使第三方拿到了算法也无济于事,碰撞也是需要成本的,只要你的 salt 够长,或者算法够安全,这就是绝对安全,基本做到了,但是 问题就在于,因为算法不可解密,后台也无法验证hash是用户发出的或者说第三方修改后的,毕竟从这个时候开始,服务器已经只认识 hash 了并不知道原文,如果想想一下是在注册传输过程中,第三方修改了 数据,后台也会信任,因为这是建立在 http 的基础上的,基本谈不了安全。
也有人会觉得 那不用hash 用可以解密的方式,例如 RSA ,对称加密,由前端散布公钥进行加密,加密完成后只有私钥可以解密,然后服务端就可以用私钥解密出数据,但是!RSA 加密的数据长度是有限的。其次 你在这里做的工作其实已经有人帮我们做了,那就是 https 。
还有的解决方案 比如 AES / RSA 混合加密,这些东西,不是没人去使用,而是成本过大。就像用6位数密码保管者2位数的余额。
呼唤远方
TA贡献1856条经验 获得超11个赞
添加回答
举报
0/150
提交
取消