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

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

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

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

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

遂结束,我也不理 leader 了,来看看大家什么意见
13732 次点击
所在节点    问与答
188 条回复
wenzaiquan199
2022-08-31 15:47:48 +08:00
@min
我没怼啊,他测我的东西看见这个给我提了个需求,天天测试就测试,按自己的想法加需求,我就拒绝了,然后说了 https 管用,她不信,然后问前后端 leader ,然后前后端 leader 吵起来了, 哈哈,前端 leader 说不过后端 leader 然后说我们前端平时开发没安全意识 :(
dearmymy
2022-08-31 15:50:24 +08:00
这种过程做加密,一般增加黑客做自动化成本。或者一些恶意提交。至于接口有没有必要,就得结合实际判断了。
不要以为 https 就完全安全了。现在攻击方式也多样化了。
matepi
2022-08-31 15:51:41 +08:00
真敏感交易,没有防重放么?

有防重放的话,比较一般的设计都就已经有摘要或加密了。最多搞个盐之类的简单弄弄,说得过去就行了
abersheeran
2022-08-31 15:53:10 +08:00
总有没有安全知识的傻鸟用自以为安全的方式来满足自己的安全意识。
different
2022-08-31 15:54:35 +08:00
其实我挺赞同前端的观点的。
https 跟前端加密貌似不完全冲突,两者解决问题的侧重点也不完全一样。
可以看看百度、腾讯等,基本所有页面的 post 请求都会加密,混不混淆没仔细看。

前端加密这不就好比验证码吗?我觉得两者的意义很大程度上是一样的,阻挡一波机器人。
如果你提到的“用户在前端绑银行卡,实名认证”这个功能没有做任何机器人校验,那不安好心的人是否可以轻而易举的搞成自动化流程?

就好比普通 win 电脑加个密码,防君子不妨小人,会因为电脑资料能被窃取而不锁屏吗?

以上个人观点。
saucerman8
2022-08-31 16:02:50 +08:00
身份证这种敏感信息,传输过程中肯定要加密啊,https 是为了防止中间人拦截,前端加密是防止协议被破解,这是两码事啊。
parad
2022-08-31 16:03:53 +08:00
PCI DSS
saucerman8
2022-08-31 16:05:14 +08:00
因为没做混淆,所以就不做加密了,那为什么不提议也同时做个混淆呢?这是纯前端自己摆烂啊
mxT52CRuqR6o5
2022-08-31 16:08:57 +08:00
web 端在 https 也不安全的场景下,攻击者可以直接伪造一个长得和你一模一样的页面去钓鱼,根本不用去研究你代码里做了多少种额外的保护措施,因为 web 端的代码也是通过 https 下发的
桌面端为什么做类似的事有意义,因为桌面端的程序不是在线下发的,我们可以假设这个桌面端程序是可信的
mxT52CRuqR6o5
2022-08-31 16:13:03 +08:00
接上一楼,因此在 web 端整这些没用的前端加密,不如去整 OTP ,因为 OTP 不是在线下发的
darknoll
2022-08-31 16:13:46 +08:00
不谈要不要加密,他一个测试有什么权利提新的需求
wenzaiquan199
2022-08-31 16:14:08 +08:00
@saucerman8
不,你理解错我的意思了,首先这事是我做一个功能时,然后测试给我提的 bug ,她的意思我懂,就是不想要明文传给后端,那我觉得我不懂这一块,总不能上网真搜个什么常用加解密就跟后端搞了吧,所以我就拒绝了,安全的事情让她去找前后端领导让他们决定或者出方案排期,然后前后端领导就吵起来了,后端领导觉得不用,前端领导觉得要用,前端说不过后端,然后跑来找我们撒气,说我们前端开发没有安全意义,给我整毛了,我也没见他平时对我们项目做什么安全方面的要求处理,现在吵不过别人就来找我们撒气,回了他一嘴
当然我知道加密比不加密有用,但是如果我加密的效果真是 base64 那种方案,那有什么意义呢
different
2022-08-31 16:19:14 +08:00
@different [45 楼] ,“其实我挺赞同前端的观点的。”->"其实我挺赞同测试的观点的。"
masterclock
2022-08-31 16:20:48 +08:00
应当考虑一下 https 通信结束后进入“系统内部”时的问题,比如有个新来的运维是不是直接就能看见敏感信息了?
wenzaiquan199
2022-08-31 16:26:30 +08:00
@different
这个前后端领导吵架的时候,我们也调研了一下,加密的有,不加密的也有
主要我是很烦测试测着就来个新需求,她觉得这个安全需求很简单,但是我又不想搞个什么 base64 ,不然就是自己骗自己,让她去找前后端领导自己商量,前端领导吵输了回来说我们开发没安全意识,就给我整毛了,平时没见他给我们做相关要求,自己开发也没搞这些,吵输了来 aoe 我们,我就回了他
byte10
2022-08-31 16:34:55 +08:00
这个世界还是土鸡多。OP 可以让他们证明,演练 "不安全的"。 另外楼上提的也挺好,可以 base64 糊弄下,因为土鸡不知道 base64 只是编码。

如果是在一般的公司,那么大概率就会遇到很多菜鸡,建议躺平吧,你跟不讲道理的人,讲不清楚的,他们认知低,学习能力差。可以去努力 去好的公司,遇到土鸡的概率 较少
byte10
2022-08-31 16:35:43 +08:00
OP 可以直接把这帖 转给你们群里,多截图。
Hse7enD
2022-08-31 16:39:46 +08:00
我就是做安全的,我阐述一下自我观点。
首先你要明白什么是安全。在编程的世界里没有绝对的安全。
在编程的世界里没有绝对的安全(项目混淆都没做,我接口参数加密个屁有啥意义,浪费大爷我时间)。你不可能拿着这句话就说不用加密不用处理安全防护机制了。所有的安全都是再说提高破解和逆向分析难度而已。

人家测试提一下意见没毛病,至于加不加公司和项目组决定。项目没混淆你可以提意见,像测试人员一样发现问题反馈,至于做不做自己无法决定时,可以反馈项目组。项目没任何破解价值那就有精力再考虑。

可以一步一步做提高项目的安全高度。
比如:
1.如果没防护攻击者是 100 人。那 100 人也拦截不了。
2.如果做一点防护攻击者是 100 人。那可以拦截 20 人。
3.如果做更多防护攻击者是 100 人。那可以拦截 80 人。
4.如果做更多更多防护攻击者是 100 人。那可以拦截 99 人。

没人能做到 100%防护,列如:苹果能被越狱。微信、抖音等 App 可被破解,很多外挂(人家做了多少安全的东西,还是会被他人破解。不能因为少数人破解就不加密不做安全了。主要目的是提高逆向难度)。
N1ckl32
2022-08-31 16:52:22 +08:00
提供一个解决办法:
由信息安全部门牵头搞一套敏感数据加解密方案,并落地实现作为 jar 包嵌入到业务部门系统中,可以解决这个 OP 问题;
将敏感信息加密传输,可以相对的降低信息泄露的风险。
wtf12138
2022-08-31 16:53:33 +08:00
安全小白歪楼--为什么说前端加密都没有用啊,非对称加密也能被破解吗?前端用公钥加密这种

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

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

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

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

© 2021 V2EX