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

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

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

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

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

遂结束,我也不理 leader 了,来看看大家什么意见
14374 次点击
所在节点    问与答
188 条回复
essicaj
2022-08-31 18:24:04 +08:00
增加一下破解成本其实还是可以的,至少从用户或者客户的角度去看,加多一层密,就多一分安全。
ic2y
2022-08-31 18:29:21 +08:00
不管是不是 https 的,涉及到机密信息,必须要加密。在大公司里,不加密的行为会直接判定为 安全缺陷。

可以使用非对称加密,增加安全性。

如果不加密,主要问题是:即使用了 https ,能保证网关之后的安全性么?现在架构都这么复杂,多层网关,再配上微服务。如果哪个 api 网关什么的 不巧记录了日志,而日志里又记录了请求参数,那赫然明文记载了身份证号码等敏感信息,这就跟当年携程的安全事故差不多了。

可以看看历史新闻:
https://www.163.com/tech/article/9O14EOS3000915BF.html

有时候,难保有猪队友。谨慎为好。
pmispig
2022-08-31 18:36:45 +08:00
前端也用 rsa 加密,这样别人就没办法了,哈哈
dddd1919
2022-08-31 19:09:23 +08:00
敏感信息别放在 url 参数里,全都塞到 request body ,那传输就是加密的,还要咋加密???

抓包工具和系统证书信任都去了,看看他能抓到 https 的请求内容不
AndyLuo
2022-08-31 19:29:04 +08:00
加密算法其实不是“别人知道我用什么就不安全了”。加密算法是“别人知道我用什么依然也解不出来”,或者说“在一定时间内解不出来”(超出这个时间消息无价值,解出来也无所谓,例如某一时刻的 OTP )。
如果能加真的是加一下比较好?当然是从安全性角度来说
Al0rid4l
2022-08-31 19:39:09 +08:00
前端加密仅对反爬, 不希望用户看见隐藏的数据有意义, 还是在配合其他无头浏览器检测的情况下
Al0rid4l
2022-08-31 19:39:42 +08:00
这帖子里喜欢自欺欺人的这么多?
一问就是都说要加密, 就没一个人来说说加密防谁呢? 不讨论防谁隔这扯加密找心理安慰呢?
防中间人, 那一通操作下来最多就是自己重新发明 TLS
防爬虫逆接口, 那为啥只加密这个接口? 其他接口加不加密? 早干嘛去了呢?
防内鬼, 防内鬼来找前端加密怕不是有什么大病?
一群人活在自己的剧本里, 我加密了, 那他肯定要来破解我对吧
这种事情做下来就是, 中间人想的是怎么钓鱼怎么骗用户装证书怎么降级, 尽量直接把数据搞到手, 能搞的怎么都能搞, 不能搞的怎么都搞不了, 和你加密不加密没啥关系
爬虫想的是能不能不逆这 js 了, 咱直接跑个无头浏览器完事
内鬼想的是, 害, 我都是内鬼了都能直接接触生产服务器了, 还费这事干嘛

还有典中典的诸如虽然我研究不深但我觉得他挺专业的, 虽然我不懂, 但加密了应该有用吧
那你咋不去写单元测试呢, 单元测试也有用也显得专业不是, 哦, 一问成本太高没时间, 属于是真有一头牛了是吧
且不说测试有没有资格提需求, 提需求开会出文档走流程啊, 让他文档里说清楚哪里不安全, 哪些数据会被盗, 怎么个盗法, 什么「我接口请求能看到我的身份证号什么的」, 你问他是不是弱 X 吧吧友, 让他仔细品一品这话, 我盗我自己是吧

以前别人说阿三我还跟着笑, 这帖子看下来大半的人和阿三也差不多
xsen
2022-08-31 19:39:59 +08:00
@dddd1919 #84 敏感信息明文,这本身就是最大的问题
pastor
2022-08-31 19:45:38 +08:00
@littleylv 兄弟,绝大多数 cookie 或者 token 失效前,你先 F12 然后刷新下页面就能这样了
pastor
2022-08-31 19:56:46 +08:00
@Al0rid4l 你看举的例子了吗?

前端的加密能防什么?
TLS 防的是什么?

这两点我前面说过了,再补充一些:
数据库为啥不应该存明文密码之类的,是为了防什么?
因为怕服务被入侵被脱裤之类的,不存明文至少防别人直接拿明文密码来登录然后盗资产之类的
服务被入侵的事件比例不是很大,但是数量还是很多

负责每个业务层次该的防的安全事项能做就做上,没什么不对的。如果照这样说,不只是 web 前段,即使是原生.so .a 别人也照样能反编译,只要肯花足够时间破解你,谁也不能保证自家代码百分百安全。后端我上面密码数据库不存明文也说了,自家服务都有被入侵的可能性。
所以,安全防护根本就做不到百分百!
那既然没有百分百,是不是就都不用做了?

我提醒你一下,首先认清自己是在地球,不是三体星,建议等你飞升到三体星在用三体人的思维思考问题,不要自以为懂地上来就一顿喷。
另外,"还有典中典的诸如虽然我研究不深但我觉得他挺专业的, 虽然我不懂, 但加密了应该有用吧",这是我谦虚的说法而已,再研究不够深入,感觉也比你那一楼的看法要更懂吧!你还真以为自己很懂就来乱批判啊?

都说谦虚使人进步,我想进步,结果这咋还我谦虚使其他人自以为是了呢!
我要检讨!我不能再这样谦虚了,否则准被你们这些真小白带歪了节奏!
Al0rid4l
2022-08-31 20:00:57 +08:00
@pastor 是前端不加密你数据库就加不了密了还是咋地? 数据库明文和前端加密有关系? 您别谦虚了, 您只是虚得不行, 谦和您没啥关系
mytsing520
2022-08-31 20:18:01 +08:00
交给前后端 leader 的 leader 去决定
hxndg
2022-08-31 20:43:40 +08:00
@pastor
纠正几点东西,tls 的作用是在一个不安全的网络环境进行安全传输,严格来讲 pki 体系才是用来对抗中间人的。
至于“负责每个业务层次该的防的安全事项能做就做上”,这个是看要提供的安全保证是什么,一般如果没有明确的需求不建议自己定安全需求。
vivipure
2022-08-31 20:46:31 +08:00
加密有用 ,但只有一点点。应付下测试就 ok 了。
shyangs
2022-08-31 21:00:53 +08:00
@pastor

資料庫存不存明文密碼,這是後端的事,樓主是前端,討論的也是前端加密.

任何有強度的加密(非對稱、插件、外掛、硬體加密、OTP ),都是後端主責,前端難道能自己決定加密方案,自己實現?都是後端主刀、前端配合.

現在是測試提需求,前端想主刀?
dNib9U2o8x
2022-08-31 21:02:46 +08:00
这个不纯算是技术问题,应该是人情世故
pastor
2022-08-31 21:13:18 +08:00
@Al0rid4l #91
@shyangs #95

你俩这两楼误解我意思了。我上面举数据库的例子是为了说明任何措施不能保证百分百,还包括社工之类的。
因为我看 @Al0rid4l 的观点给我的感觉就是”既然前端不能百分百还做它何用“,所以举例子说明:
不只是前端,后端、数据库同样不能保证百分百,但是后端、数据库仍然要做;
进一步来反驳 @Al0rid4l “做它何用” 的观点,不是用来论证因为数据库需要密文所以应该由前端开始密文。

但是话说回来,至少我遇到过的合理的项目,都是从前端开始密文的,前面也举过前端页面别人 F12 的例子了,麻烦 @Al0rid4l 看明白了再来评判
pastor
2022-08-31 21:17:33 +08:00
@hxndg 我对 tls 的描述不准确,感谢指出!

"一般如果没有明确的需求不建议自己定安全需求。"
这个除了少数安全要求很高的项目,绝大多数场景,都是程序员自己负责了基本的安全策略,不可能每个公司都专门的安全部门去指导业务开发来实施这个,比如我上面举例子的几点,虽然没人明确列出行业规范,但类似的实现也差不多是基操了。所以说没有明确的需求是正确的,但是业务程序员自己不去管安全需求也是不太正确的
fkdog
2022-08-31 21:44:15 +08:00
国内的网络环境我建议你还是对敏感数据加一下。
一是国内很多公司的机器是装有监控类进程的,而且还加了自签根证书。
二是的确会有很多小白用户不知道中间人攻击直接无视浏览器安全提示。
sparrowMan
2022-08-31 22:10:07 +08:00
没有绝对的安全 但是银行卡这种敏感信息 还是加密的好 不要依赖 https 因为放在公网上不可控的因素太多 能多安全点就安全点 前端加密+盐 后端解密 这个接口花不了多长工时的

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

https://tanronggui.xyz/t/876693

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

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

© 2021 V2EX