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

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

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

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

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

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

35375 次点击
所在节点    程序员
336 条回复
nobject
2024-03-20 16:27:41 +08:00
之前公司的前端是对参数做 aes 加密,后端解密,只是相对破解门槛较高而已。还有密码应该要加密也不会用 md5 这种不可逆的方式吧,不然密码规则后端怎么校验
jgh004
2024-03-20 16:28:25 +08:00
这还有啥可讨论的。。
musi
2024-03-20 16:28:48 +08:00
@justFxxk2060 #19 我只需要把加密部分的代码删掉就行了,为什么只能欺骗一段时间内的用户密码。
wunonglin
2024-03-20 16:29:04 +08:00
90%的业务情况是没必要的,因为 https 足够安全。

但是,如果你客户端浏览器装了恶意证书,那么请求的内容就会暴露。

所以你可以自生成一对证书,在发送前用证书加密,后端拿到后用私钥解密,在一定程度上能避免这个问题
ewpui
2024-03-20 16:29:18 +08:00
gam2046
2024-03-20 16:30:14 +08:00
在 https 的前提下,前端进行散列或者签名的唯一积极意义是防止初级选手来刷接口或者简单的重放攻击

除此以外不具有什么太大的积极意义。
justFxxk2060
2024-03-20 16:30:19 +08:00
@musi 你需要改动前端,然后需要反编译后端的代码/服务,逻辑,然后再编译回来,然后还需要部署。这个工作量会不会很大?
flyhaozi
2024-03-20 16:33:09 +08:00
看目的是什么,防密码泄露是用处不大,但是请求体、响应体非对称加密再加上 JS 混淆 vmp 加固对防脚本逆向还是有一点点用的
tool2d
2024-03-20 16:33:17 +08:00
@nobject "还有密码应该要加密也不会用 md5 这种不可逆的方式吧"

就是要不可逆,才能防止内鬼拿用户数据去卖钱啊。
vmebeh
2024-03-20 16:33:21 +08:00
用后端传过来的盐算摘要后传回去,数据库只存 salt 和密文,传输过程中也只有 salt 和密文
1iuh
2024-03-20 16:34:59 +08:00
1. md5 不叫加密。
2. 仅用 md5 也起不到保护密码的作用,请搜彩虹表。
3. 1 楼说那种情况,一般是指数据库泄露了,导致用户的密码被泄露。 但是楼主正文提到了, 后端说处理过了。
4. 确实是脱裤子放屁。
musi
2024-03-20 16:35:18 +08:00
@justFxxk2060 #27 有没有可能我只需要通过前端代码反推出加密逻辑就行,在后端服务前面再套一个服务负责加密用户名密码,在了解了加密逻辑后这一套下来不是快的很
leonshaw
2024-03-20 16:35:40 +08:00
处理不好的话,员工 debug 的时候记一下 log 里的密码再简单不过了。
userKamtao
2024-03-20 16:39:32 +08:00
但如果不加密,那意味着服务端可以拿到用户明文的密码,用户隐私这方面是不是也值得去考虑呢?
userKamtao
2024-03-20 16:41:41 +08:00
@1iuh 如果那是一个独立开发者开发的网站,用户多平台密码一样,服务端不就可以知道用户密码了?
google2020
2024-03-20 16:45:13 +08:00
不是脱裤子放屁。

可以防止无意泄露和二次伤害。比如打 debug 日志可能会无意间把用户输入打到日志里,这样会泄露用户密码明文。

还有黑客流量复制攻击,不是所有攻击都会改代码的,有种攻击是观察者模式,只在网络层增加一个转发插件把流量全部转发给自己。如果用户提交了明文密码,那密码就会泄露。如果是前端摘要过的,那只会泄露 hash 。
bianhui
2024-03-20 16:45:21 +08:00
不要明文,隐私合规问题。如果明文传输你可能在任意环节暴露出用户的真是密码。如果操作不当你的员工甚至可以拿到密码加用户手机号登录任何设置此密码的网站。在一个如果用户是明文,这样的记录会出现在日志,代理多个地方。所以密文是必须的,不在安全,旨在合规
userKamtao
2024-03-20 16:46:34 +08:00
@flyhaozi 感谢回答!但是我觉得防密码泄漏就是防所有人,包括服务端本身,服务端不应该直接能拿到用户的密码。
weijancc
2024-03-20 16:46:37 +08:00
前端密码加密确实没有意义, 如果 md5 加密, 实际上 md5 的密码就可以当成密码, 为了防止密码在传输过程中被监听, 使用 https 即可. 前端加密通常是为了混淆接口请求参数, 防止爬虫, 当然也只是防君子不防小人.
userKamtao
2024-03-20 16:48:04 +08:00
@google2020 这位绝对是大佬,看 id 就知道了。

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

https://yangjunhui.monster/t/1025454

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

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

© 2021 V2EX