猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
登录模块,用户密码是在哪个阶段计算hash的?
问题描述
想知道用户密码应该是明文传到后端计算hash验证还是先计算hash再传到后端验证?
问题出现的环境背景及自己尝试过哪些方法
略
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
略
你期待的结果是什么?实际看到的错误信息又是什么?
如题
ABOUTYOU
浏览 705
回答 4
4回答
三国纷争
从直觉出发也能知道,将用户的密码以明文形式传输是不安全的。前端应该将用户输入的密码作散列或者非对称加密后再传输到后端。如果一定要传输明文,至少也应该使用https。
0
0
0
桃花长相依
不知道谁给上面的点的踩,这里补充一点儿内容。首先,作为开发者,不应该知道用户的原文密码。犹如上面说的前端计算和后台计算两种方式都有,但后台计算的方式显然更加不安全。的确,从安全的角度来说,如果是 http 那么用户在向后台发送数据时如果有第三方介入,就已经不安全了,第三方就可以在这里面拿到密码原文了,但是如果在前端使用 md5 + salt 就已经确保了在传输过程中第三方无法完全取得用户的密码原文,因为是hash算法,即使第三方拿到了算法也无济于事,碰撞也是需要成本的,只要你的 salt 够长,或者算法够安全,这就是绝对安全,基本做到了,但是 问题就在于,因为算法不可解密,后台也无法验证hash是用户发出的或者说第三方修改后的,毕竟从这个时候开始,服务器已经只认识 hash 了并不知道原文,如果想想一下是在注册传输过程中,第三方修改了 数据,后台也会信任,因为这是建立在 http 的基础上的,基本谈不了安全。也有人会觉得 那不用hash 用可以解密的方式,例如 RSA ,对称加密,由前端散布公钥进行加密,加密完成后只有私钥可以解密,然后服务端就可以用私钥解密出数据,但是!RSA 加密的数据长度是有限的。其次 你在这里做的工作其实已经有人帮我们做了,那就是 https 。还有的解决方案 比如 AES / RSA 混合加密,这些东西,不是没人去使用,而是成本过大。就像用6位数密码保管者2位数的余额。
0
0
0
呼唤远方
前端计算和后台计算两种方式都有,但后台计算的方式显然更加不安全,密码最好尽可能快的转换为不可逆的散列值。一般是在登录提交用户名密码之前计算密码的散列值,由前端计算。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
JavaScript
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续