盼大佬解答,前端加密到底是不是脱裤子放屁?

2024-03-20 16:16:27 +08:00
 userKamtao

闲暇之余,探索了一个小伙伴的开源网站,无意中发现了他的修改密码接口,是明文传输的,如下图。

后来我跟他反应了这个问题,我的观点是应该在前端 md5 加密一下,他说,他在后端做了加密处理,明文传输没问题,网站是 https ,前端加密不就等于脱裤子放屁吗?

和他几番讨论之后,无果,也有几个小伙伴觉得前端加密等于自己骗自己。

我经验比较单薄,以至于没有什么实际上的论点去论证,希望有大佬解答一下,这种场景在前端加密有没有意义。

35449 次点击
所在节点    程序员
336 条回复
Nzelites
2024-03-20 17:42:40 +08:00
@V2April 有意义的,对于同账号服务器只存储加盐的密码 hash ,客户端 hash 后再发送密码,可以确保用户在该网站密码泄露的同时此密码无法被用于撞其它网站的账号
mohumohu
2024-03-20 17:45:44 +08:00
密码学经典之不要自己设计加密算法
lyy780808
2024-03-20 17:46:45 +08:00
问题有点多,随便指出一点吧。

你说 "我的观点是应该在前端 md5 加密一下"

首先 md5 是一个 hash 算法,直接将这个 hash 值传给后端,后端没办法逆向回去,一些业务比如判断密码的复杂度做不了。
mohumohu
2024-03-20 17:47:08 +08:00
如果你把各方面可能的参数和漏洞都考虑了一遍,你最终会发现你要把 https 重新实现了一遍。
jspatrick
2024-03-20 17:47:31 +08:00
@musi #18 认同你的看法,但凡是泄露,不论是不是 md5 后的结果,都可以伪造请求拿 token 之类的操作了
userKamtao
2024-03-20 17:48:50 +08:00
@lyy780808 谢谢大佬,但是这个判断复杂度其实,可以在前端做,后端不需要知道我的密码是什么,这样会安全很多。
idealhs
2024-03-20 17:51:16 +08:00
你要不再写一个 https 呗
yKXSkKoR8I1RcxaS
2024-03-20 17:52:34 +08:00
考虑隐私,不应该明文传输密码
iosyyy
2024-03-20 17:54:38 +08:00
@justFxxk2060 #7 那也应该在后端加密的好吧 前端加密就是无用功 而且 md5 严格意义上来说并不算加密算法
iosyyy
2024-03-20 17:55:39 +08:00
@RightHand 中间人攻击 https 就能阻止好吧
K120
2024-03-20 18:00:11 +08:00
你说服务端拿到明文密码就不太对,这种都不需要你去考虑的,服务端要做的是加密一旦存入数据库就不可能有明文,没有人知道这个用户的明文是什么,目前在我看来 95%以上的系统前端都是直接明文传的, 如果是前端做处理那就会被知道这个系统用了什么加密算法,这也是一个隐患。
yule111222
2024-03-20 18:02:40 +08:00
不需要加密,你可以学习一下 https 的原理和对应解决的问题
cnt2ex
2024-03-20 18:04:06 +08:00
我更喜欢加密的,因为中间可能有 CDN ,虽然 CDN 是可信中间人,但是多一层保险比没有好。
eber
2024-03-20 18:04:11 +08:00
@userKamtao #66 你是真离谱呀兄弟! 按你这思路 啥判断都能在前端做?那你这个判断复杂度是不是能被轻松跳过? 并且 hash 这种无法逆向的算法,你给后端传个这玩意 你让后端怎么处理? 离大谱!!! 理论上 https 的网站不用做前端加密,事实上很多大厂的页面已经是这样做的(那些说中间人攻击的,可以开启 HSTS 并加入 HSTS Preload List ,双向认证,HPKP 等,除非你电脑中病毒等情况 这谁都没办法)。 就算要做加密 那也要选可逆的算法呀 比如双向 RSA 加密,否则后端拿不到实际值有啥用。。。
cuzfinal
2024-03-20 18:04:38 +08:00
google 登录也是明文传输的,也就用了 https
5had0w
2024-03-20 18:05:59 +08:00
你前端加不加密都无所谓,反正不管你传的是明文还是密文,后端都一定要对你传过来的东西先加盐然后再做加密,然后再存到数据库里,只是你传密文的话,一些密码合规性的判断,后端就没法做了
rockxsj
2024-03-20 18:06:37 +08:00
的确是脱裤子放屁 OP 再提高一下姿势水平
userKamtao
2024-03-20 18:08:07 +08:00
@K120 其实服务端没有任何地方需要用到用户的密码,直接存储 md5 后的字符串即可,md5 不可逆,为什么还要加密算法呢?
kneo
2024-03-20 18:08:55 +08:00
安全是多环节的,多一个环节不是坏事,还可以增加用户对网站安全性的信心。
你也可以不加密,但是你会遭到用户质疑,用户会觉得你是不是在后台明文存他的密码了。
我记得 Github 有的表单就没加密,具体记不得了,好像在 hacker news 上刷到过。
加个密屁大点事,建议别偷懒了。和用户为这个扯皮挺没劲儿的。
userKamtao
2024-03-20 18:09:12 +08:00
@eber 为什么要拿用户密码?你为什么要知道用户的密码是什么呢?滑天下之大稽

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

https://yangjunhui.monster/t/1025454

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

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

© 2021 V2EX