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

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

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

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

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

遂结束,我也不理 leader 了,来看看大家什么意见
14374 次点击
所在节点    问与答
188 条回复
laolaowang
2022-09-01 09:15:35 +08:00
理解楼主, 测试可以提出意见、或者建议,但是这东西不能当做 bug (功能)直接提给前端,

如果之前需求提了要加密,那就是前端的锅,如果没有提,测试干脆去写需求把
这东西应该向上报告,排期啊
penll
2022-09-01 09:17:36 +08:00
没人问是 Web 得前端吗?如果 web 前端,那加密真没啥用。破解成本太低了。就算混淆之后
CodeCodeStudy
2022-09-01 09:18:53 +08:00
这个测试半吊子,他肯定不懂技术,弄个 base64 就得了。
但是这个算不算 bug ,要看产品给的需求文档或原型里有没有这个要求,如果没有则不能算 bug
hideonwhere
2022-09-01 09:24:59 +08:00
我那测试还能边测边提需求
TGl2aWQgZGUgZGll
2022-09-01 09:31:24 +08:00
至少可以增加一些人要动你们数据的门槛,这就够了。

不一定是要破解 https ,比如某个用户,就想抓包改数据啥的,来利用某些活动之类的功能,达到快速刷积分的目的啥的,如果数据有一定的加密编码啥的,至少他看不到明文数据,可以把一些不是很懂前端算法的人吓退了。

再说了,你们领导说加,那就加,你就负责干就行了。

那些说没必要的人,那 js 算法各种混淆按道理也都没必要,因为反正有能力的人一样能看懂。关键是增加了很多破解成本啊
newmlp
2022-09-01 09:40:50 +08:00
@SimbaPeng 不然你靠读心术拿数据吗
ren2881971
2022-09-01 09:42:08 +08:00
给客户端和服务端都发放 CA 证书,采用双向 SSL 认证。
客户端和服务端都能够认证身份。
信息传输过程中都会使用对方的公钥进行消息加密,被拦截也解密不了。
sampeng
2022-09-01 09:45:12 +08:00
前端坐 rsa 是可行的。n 年前微博没 https 就是自己搞了一套 rsa 加密。而且代码也没混淆。研究了一下,非常巧妙。
但是开发成本确实不小,要衡量收益。

发展到现在手段就很多了:

1.自己写交换公钥逻辑,其实不需要把公钥保存在客户端里面,每次请求的时候先找服务器要一下公钥。微博当年的方案就是这样搞的,而且每次的公钥都不相同,因为私钥直接就可以生成公钥。

2.wsam 。现代浏览器都支持。

3.控件,插件等等。

还是看安全和收益的比例。。

当然,这是技术讨论。其实 OP 反感的是测试提这样的 bug 。。。怎么看都应该是产品提,产品来判断要不要搞,产品来协调资源和排期。
jianghu52
2022-09-01 09:47:08 +08:00
5 年前的我,估计会顶着压力,不加密。
3 年前的我,估计会跟 leader 吵吵一顿,然后加上密
现在的我,会心理鄙视一番,然后默默的找一个最通用的加密方式
astkaasa
2022-09-01 09:54:52 +08:00
前端怎么加密?
Huelse
2022-09-01 09:55:11 +08:00
老老实实给他们上加密呗,你永远不知道用户环境是怎样的,证书问题、控制台监听等等都有可能造成泄漏,反正加就完事了
Stevenv
2022-09-01 09:58:42 +08:00
然后你成功让网友们也吵起来了 哈哈
wzy44944
2022-09-01 10:07:33 +08:00
问题的核心不是前后端老大不对付吗?为啥一群人讨论安全
xiaochena
2022-09-01 10:29:35 +08:00
@daveh 密码通过公钥加密、然后公钥从接口明文传输。你要不要听听你在说什么
daveh
2022-09-01 10:35:05 +08:00
@xiaochena 你怕不是对公钥有什么误解?
公钥的另一半不是母钥,公是公开的意思。
goodname
2022-09-01 10:55:25 +08:00
终于碰到专业对口得了,作为信息安全人士说两句。
1.https 默认视为没有中间人攻击,客户自己瞎信任证书,导致信息泄露管不了
2.https 的 request body 通常不需要混淆(金融对安全要求高,但也没必要),一些重要接口会做下摘要防篡改,也是防菜鸟不防高手
3.response 如果有敏感信息,是需要打码传给前端的
goodname
2022-09-01 11:12:49 +08:00
@goodname 补充下业内前端与安全相关的一些事情
1.js 混淆(必做)
2.防篡改(选做) md5 摘要
3.人机验证(选做)点选验证,滑动验证
4.加密传输( http 必做,https 选做)传输账户密码,个人信息时用
fbi007130
2022-09-01 11:14:44 +08:00
都是成本与效益问题。
twl007
2022-09-01 11:25:52 +08:00
@sampeng 在前端做 rsa 某方面来说就是在重新发明 TLS

而且对于不信任 https 某方面来说 其实也不信任 rsa 毕竟在密钥交换阶段用的实现也包含 rsa 如果觉得 https 不安全 那么你在前端实现 rsa 也是一样的问题

整个传输走的是 https 的话 重新发明一遍 TLS 有多大意义

@daveh rsa 的性能消耗很高的 而且这个也不仅仅是前端的事情了 后端不得先弄一套对应的加解密接口给前端用? 而且你这么造一遍轮子是真的安全了还是只是自己感觉更加安全了?为什么 TLS 选择用对称加密而没用非对称来直接加密数据?

真觉得还是不要在安全领域自己造轮子
amon
2022-09-01 11:28:38 +08:00
现在讨论个技术问题也乌烟瘴气的吗?还是很高兴有不少人和专业对口的出来提出自己的意见。
作为一个非安全相关但经历多个大中小项目的老菜鸡出来叫嚷两句:
1. 大一点的公司会有敏感数据安全等级,身份证 /银行卡号这些应该是比较高的安全级别,差不多仅次于各种密码
2. 对于不同安全等级的数据会有不同的数据处理要求和规范。如果公司已经有明确的规范,请遵守;否则如果公司有信息安全人员,请咨询;否则请咨询 Leader
3. 接第 2 条,有些敏感数据处理规范不单是企业的要求,也是行业的标准。比如金融行业,数据合规是一个重要的工作,其中就包含数据存在哪怎么存怎么加密怎么展示等等
4. HTTPS 并非绝对安全,如果明文传输将会有很多种方式泄露数据(这个我不专业,请参考其它专业对口的人的发言)
5. 测试是个好同志,会根据之前公司的经历主动提出优化改进的地方,请对事不对人吧

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

https://tanronggui.xyz/t/876693

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

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

© 2021 V2EX