目前有没有用密码登录的网站做了前端加盐加密?

2018-12-29 13:30:56 +08:00
 whileFalse

后端再次加盐加密。确保服务无法拿到用户明文密码。

4571 次点击
所在节点    问与答
31 条回复
GDC
2018-12-29 13:40:42 +08:00
有,最初的目的是为了防止中间人抓包,在 https 没普及的时候还是有点用的
Mogugugugu
2018-12-29 15:17:07 +08:00
有,刚做完,前端加密,后端再加密- -
helone
2018-12-29 15:21:55 +08:00
现在也很有用,即使你上了 https,正如楼主说的确保服务无法拿到用户明文密码

我记得 twitter 就爆出过这种事情,虽然数据中没有记录明文密码,但是日志里记录了用户的明文密码(我猜测可能是用户请求的日志,日志中有用户的请求明文数据),解决方案很简单,前端加密后,后端服务再次加密后与数据中的值校验,无论是哪一步都保证了用户密码得保密性
TomatoYuyuko
2018-12-29 15:23:05 +08:00
非对称加密√
yunye
2018-12-29 15:26:33 +08:00
用 RSA 加密实现 Web 登录密码加密传输 - guogangj - 博客园
https://www.cnblogs.com/guogangj/archive/2012/03/05/2381117.html
WindProtect
2018-12-29 15:41:05 +08:00
前端加盐的意义何在?如果是怕传输过程被撸的话,https + 前端加密就行了吧,加盐的话需要先获取账号的盐然后再加盐再加密,这样就已经多了一步交互了,即使这样就算传输过程中被撸了,破解的人也可以直接用了加盐加密的密码直接提交登录了吧。再换个思路,就算你盐是前端生成的,然后还是得把盐和最终加密密码一起提交了,过程中被撸了,那黑客拿着盐和最终密码再次提交也照样登录吧。
nfroot
2018-12-29 15:56:53 +08:00
@WindProtect 当前时间(服务器判断时间差异比如超过 2 分钟就直接拒绝)+随机值(服务器判断随机值不能重复使用)+用户名+密码
生成 hash,拿着盐也不许再提交,服务器验证一下随机值和时间搭配只能用一次。
nfroot
2018-12-29 15:57:56 +08:00
接楼上,再加一个 IP 也判断

@WindProtect 其实做这些都没用,服务器不判断 IP 的话,直接拿到你登录后的 cookie 就好了。
whileFalse
2018-12-29 16:03:04 +08:00
@WindProtect 君不见好多服务(比如 google )都是让你先输入用户名,然后密码框才出现么。这个时候就够从服务器拉盐了。
还有,读题,你就明白为啥要前端加盐加密了。
allenhu
2018-12-29 16:20:27 +08:00
没太大意义,明文还是密文,一般都是后端定
isayme
2018-12-29 16:23:14 +08:00
网易 126/163 邮箱 好像在用
solaro
2018-12-29 16:26:11 +08:00
前端加密有意义吗?
zpf124
2018-12-29 16:27:37 +08:00
你不用加盐, 直接用复杂一点的摘要算法(比如 sha256) 后端就还原不出来密码明文了。

前端加盐 存在哪?
cookie ? 用户换个浏览器得重新找回密码一次?
js 里写死? 那找到你这个盐值也不难,而且加密用同一个盐值和不加盐差距不大...
whileFalse
2018-12-29 16:35:04 +08:00
@zpf124 然后后端彩虹表一下。后端加盐的意义,套在前端哪里不难理解吧。
盐依然存数据库,可以和后端的盐共享,登录时输入用户名后拿着用户名管后端要。
或者拿用户名做盐也行。
WindProtect
2018-12-29 16:42:59 +08:00
@nfroot 其实那时间那个方案我想过,只是你提交的时候也得提交时间和随机值,不然直接给服务器服务器也不知道是什么时候做的加密无法吧时间加进去校验,这样的话是能提高攻击成本但针对性的攻击也是很好破解的。ip 也是,同个局域网就好破。

另外,我原本是想讨论为啥前端需要加盐而已,加密手法其实只是增加破解难度而不能防止人家破解密码,所以我觉得 @whileFalse 补充说的防撞库这个观点确实可以说服我在前端加盐。
springGun
2018-12-29 16:49:41 +08:00
在使用了 https 后前端加密的意义何在?
nfroot
2018-12-29 16:54:23 +08:00
@WindProtect 安全措施从来就没有一本万利的事情,都是一项项安全措施叠加起来形成一个很高的程度。并不能因为它的作用小,就放弃。

就像备份数据,很可能在比较好的环境下,实时备份、定时备份、离线备份、检测备份进行了十年,但是却毫无作用(根本就没出事故用到备份),那这一切就没意义就不要做了吗?

我们不要出了事情再去检查,为什么那个东西机制那么简单你却没有做?多做一个措施到底是有多害人,害到旁人?为什么一堆人总是说,这个没用,那个没用。不要搞,没意义?


回到主题,HTTPS 理论上是不能被劫持的,但是特殊情况下,比如企业、病毒内置了根证书,不就可以侦听明文了?可能有人又要说。有侦听就有劫持篡改的能力,干脆直接做个假的输入框,直接获取真实密码。

真的不是这样的,不是所有人都能做到最厉害的那一步的,每一步都是一个门槛,所以要一步步去做措施尽可能的避免。
WindProtect
2018-12-29 17:20:19 +08:00
@nfroot 对的,您教训的是。
Vegetable
2018-12-29 17:26:07 +08:00
前端只能不可逆加密,比如哈希,才能防止后端拿到明文.加盐没什么必要了吧,前端加盐等于没加.
bestie
2018-12-29 17:30:07 +08:00
@springGun 应该是防内鬼之类的吧,或者是防止 access log 被拖

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/522242

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX