为安全问题,早上公司热烈讨论

2022-08-31 13:08:39 +08:00
 wenzaiquan199
场景:用户在前端绑银行卡,实名认证,前端通过 https 请求,明文将数据传给后端,故测试给我提了个 bug 要我前端加密传输,我网上搜了搜,觉得前端目前拿不出什么方案加密比 https 安全

测试:你这个东西加个密传给后端
我:有 https ,有一定的安全保障了
测试:但是我接口请求能看到我的身份证号什么的
我:你能拦截到别人的请求么
测试:那肯定有人能拦截到
我:我随便加个加密可以,我们代码没做混淆,别人看代码直接知道什么加密方法,随便解了,别人能从 https 把这个解析出来,破解我们这个跟玩一样,加了有意义么
测试:我之前公司都做了啊

遂测试找前端 leader 说,然后后端 leader 就说前端传过来不用加,后端给前端加密的数据就行了,前端 leader 说要,然后他们吵了半天

末了前端 leader 跟我说,要有“安全意识”,我直接回你项目混淆都不做,我从加密库找个现成的加密方法,有用么

遂结束,我也不理 leader 了,来看看大家什么意见
14374 次点击
所在节点    问与答
188 条回复
wenzaiquan199
2022-08-31 16:57:05 +08:00
@Hse7enD
老哥,我懂你的意思,做肯定是不做有用一点,测试一开始让我加,我觉得这玩意是他自己发现的需求,你目前拿来当个 bug 给我提肯定不合适,因为我不懂,我也没相关处理经验,所以我拒绝了,让她去找前后端 leader 讨论,当然我也可以就 base64 给她转码,但是那不是自欺欺人么?
安全我觉得是个大的需求,不是测试提一个 bug 可以解决的
然后就是前后端 leader 吵,前端的吵不过后端的,然后喷我们没安全意识,所以我就回嘴
wenzaiquan199
2022-08-31 16:57:54 +08:00
@N1ckl32
没安全信息部门,前端 4 个人,leader 不写代码,3 个人干活,后端 2 个人
lindas
2022-08-31 16:58:31 +08:00
@wtf12138 把 base64 当加密了吧
pastor
2022-08-31 17:00:31 +08:00
1. https 主要是解决数据链路上的中间人问题,比如各种代理软件、甚至被黑客入侵的 ISP 节点。如果没有 https 、中间人直接看到你内容,太不安全了
2. 前端加密不全是为了解决中间人问题,比如考虑下公共电脑,上一个用户登录上去了忘记退出或者关闭,下一个用户 F12 一看,哦豁,上一个人的用户名密码都拿到了。甚至,比如你自己电脑,刚好自己上厕所走开一会忘记锁屏了,其他人“一不小心”就知道了你的相关信息。这一层加密至少提高了门槛,能把绝大多数不必要的低级泄露避免掉
3. 至于前端代码不加混淆,那是他这一层的安全问题,可以建议他们也加上混淆之类的

我对安全这块研究不深,但觉得 OP 家的测试提出问题说明测试还是挺专业的,至少相比于 OP 家目前的后端团队靠谱。

在自己舒适圈习惯了的人多数都不喜欢被别人提建议,这种心态不好,建议 OP 和一些楼层放下这种心态,平和一些对待测试。尤其是,更不要去随便鄙视人家,很可能最后发现小丑竟是自己。
我曾经也像 OP 和一些层主一样,抵触外界干扰,别人说点啥就觉得别人找事、别人菜鸡,但其实是因为自己还太年轻无知,工作久了逐渐意识到自己的缺点,然后花了很长时间去有意识地让自己改正。没什么丢脸的,自己进步了去争取做到海纳百川有容乃大,壁立千仞无欲则刚,于人于己,都挺好的

说的不一定对,欢迎批评指正或补充
pastor
2022-08-31 17:01:37 +08:00
补充问一下:OP 家的数据库里存的也是明文吗?
xylxAdai
2022-08-31 17:03:24 +08:00
不重要。leader 让你加你争辩几句争不过随便加了就完事了。工作而已。不用太当真。说白了公司请你来不是让你来当安全顾问的,是让你来按要求做事的。
littleylv
2022-08-31 17:05:03 +08:00
@pastor #64 “上一个用户登录上去了忘记退出或者关闭,下一个用户 F12 一看,哦豁,上一个人的用户名密码都拿到了。”

请问如何做到“下一个用户 F12 ”还能看到上一个用户的请求记录的?据我所知 Chrome 的 F12 的网络页签只显示打开 F12 之后的请求
ksedz
2022-08-31 17:09:00 +08:00
有必要的,中间人可以拿到数据。
虽然如果能中间人了加密不加密对这个应用没什么影响,但是用户可能不同应用使用相同的密码,加密可以保护用户其他应用账户的安全。
ysc3839
2022-08-31 17:09:18 +08:00
前端加密可以防窃听但防不了针对性攻击,比如后端解密 https 之后经过了某些不可控的负载均衡器之类的,或者客户端有某些恶意浏览器扩展,或者能解密 https 流量的间谍软件,这些软件往往只是广撒网记录所有流量,然后攻击者再人工分析筛选出信息,此时前端加密是有用的,要不要用也是看是否需要防御此类攻击。
SHOOT
2022-08-31 17:11:36 +08:00
加密随便忽悠一下就是了,很多时候是给客户演示看的,客户可不知道这些,但是在演示的时候客户能看到明文密码就肯定会提意见。打个工而已,如果做个小事能避免冲突那就顺手做一做咯
newmlp
2022-08-31 17:20:01 +08:00
@madNeal 如果别人连 https 都能给你攻破了,你这前端加密能提高多少成本,比 https 破解难度还高吗
lmhsmart
2022-08-31 17:30:41 +08:00
可以搜一下 tls 卸载,不加密还是有风险的,有很多黑灰产就是在边缘节点或者运营商节点上加监听产品(流量分析),抓这些账号密码明文
tutou
2022-08-31 17:47:58 +08:00
可以用非对称加密
lmhsmart
2022-08-31 17:52:20 +08:00
补充一下不加密可以被利用的点:
1. 内网泄露,比如日志打点数据
2. 传输过程泄露,公网走 TLS ,但是在边缘节点卸载,可通过在机房部署数据采集劫持用户数据。或者 tls 证书泄露
3. 客户端泄露,木马、手机权限被接管,app 内部漏洞,csrf 、xss 等漏洞,使用不标准的 sso & oauth 协议等
SimbaPeng
2022-08-31 18:06:19 +08:00
@newmlp 谁告诉你需要破解 https 才能拿到数据?
pkwenda
2022-08-31 18:14:38 +08:00
那既然这个事儿已经上升到这个层面了,那就做透:
1 、生成公私钥对儿
2 、前端公钥加密
3 、加密传输
4 、后端私钥解密

让领导评估开发成本,注意:这个时候把决定权让给领导,他说干啥就干啥
如果用 base64 就用 base64

你也可以说用 MD5 加密测测他们的智商在不在线(就是可能误伤自己)

如果领导认可非对称加密方案,就复盘一下公司所有的出口流量敏感数据,提出:组内业务全部调整的想法
吐过领导够魄力整体调整,KPI 就来了



嘿嘿
pkwenda
2022-08-31 18:17:41 +08:00
@pkwenda

让安全工程师,魔改路由器,管你什么入侵阿里云、拦截路由器、wifi 什么方法,你先拦截到流量,反正一定要模拟真实黑客
fengci
2022-08-31 18:17:51 +08:00
看楼上说了那么多。 还是 @Hse7enD #58 说的最靠谱。
securityCoding
2022-08-31 18:22:25 +08:00
加一下好点,日志也很容易泄露的
mejee
2022-08-31 18:23:38 +08:00
看要求。如果为了安全而要加密,这个理论是站得住脚的。

https 安全,也不安全。举个例子,你用公司的电脑聊微信,如果微信不加密,只用 https ,有一定概率你们公司的网络是可以监听你的微信聊天记录的(公司的电脑被动了手脚),所以还是看场景。

https 安全的前提是:用户使用的当前设备是没有被做过手脚的。

所以还是看你们老板的想法,以及你们具体的要求,对安全程度的要求是什么。

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

https://tanronggui.xyz/t/876693

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

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

© 2021 V2EX