问下安卓如何防止 root 下抓包, app 接口请求并没有做加密措施

2021-09-16 18:14:03 +08:00
 shiguiyou

要改接口的话,加密每一个接口改动比较多,隐私整改需要快速上线

9810 次点击
所在节点    Android
75 条回复
2i2Re2PLMaDnghL
2021-09-16 19:53:33 +08:00
ssl pinning
到底是谁让你隐私整改,你就算自己设计协议,都 root 了直接 hook 函数不好吗?
sadfQED2
2021-09-16 20:16:18 +08:00
应该不是隐私整改吧,我们最近也在隐私整改,但是整改的是所有日志,数据库内容,传输层只要上了 https 就没问题
cweijan
2021-09-16 20:42:52 +08:00
想要完全屏蔽是不可能的, 只能增加抓包难度, 最好的方式就是强制验证 HTTPS 证书.
shiguiyou
2021-09-16 20:56:00 +08:00
@starsky007 append 了,领导说抓包发现是明文,我也不知道是领导的意思还是工信部的意思,不管谁的意思,都要改...
shiguiyou
2021-09-16 20:56:34 +08:00
@sadfQED2 分配到我的任务就是数据传输加密,其他小伙伴是其他的隐私问题修改
lait
2021-09-16 20:56:57 +08:00
你把请求参数简单加密一下,不就非明文了嘛。隐私整改检测的时候它也不会去破解你的加密算法。
ysc3839
2021-09-16 20:57:37 +08:00
所以真实情况是程序和服务器通信没有加密吗?那改用 https 不就好了?
ysc3839
2021-09-16 20:58:39 +08:00
@MoeMoesakura #2 MagiskHide 已有办法检测,还有 hardware attestation 。
shiguiyou
2021-09-16 21:00:11 +08:00
@jim9606 就是 https,但是抓包工具可以在 root 的情况下抓到明文数据,接口没加密导致
shiguiyou
2021-09-16 21:01:33 +08:00
@lait 改接口来不及,因为 app 存在时间长,换了十几波人了,架构老,还不统一,还需要重新全量测试
WebKit
2021-09-16 21:02:56 +08:00
不 root 都能抓包啊
WebKit
2021-09-16 21:03:51 +08:00
@PMR hack 下改一下就可以了
x86
2021-09-16 21:06:42 +08:00
wooyuntest
2021-09-16 21:12:00 +08:00
即使你改了接口,那以前的老版本全部连不上服务端了? 这个代价能接受吗?
shiguiyou
2021-09-16 21:13:48 +08:00
@wooyuntest 对,不能改...
wooyuntest
2021-09-16 21:15:53 +08:00
@wooyuntest 如果能接受这个代价的话,可以新发一个版本。app 中将所有 http 请求的 header 、body 和后端约定好格式以及加密方式,将加密后的密文通过 https 发送到后端,后端再接口上部署一个 apigateway 负责解密发送过来的密文以及转发给真正的后端接口。
这个方案能在不改动服务端的情况下,完成这个需求,但还有许多细节需要考虑,比如加密密钥的生成,每个请求一次一密,每次请求加密密钥的传输等等问题。
jim9606
2021-09-16 21:21:48 +08:00
只要你是用正常的方式使用 HTTPS,使用系统证书库且 TargetAPI>=24,所谓的 root 下明文只是被 root 篡改系统证书存储区后 MITM 了,传到网上流量依然是加密的,服务器可以禁止明文 HTTP 访问。

骗领导的方法是将报文用 base64 编码后用一个硬编码密钥 xor 一下,服务器还是得加个 api proxy 。

别的方法我就不推荐了,通过 root 安装证书搞 MITM 这种事都不应该是常规 APP 该去预防的事。其他诸如 HPKP 还有硬编码信任根都有不小的运维风险。
HarryQu
2021-09-16 23:54:15 +08:00
工信部要求你们整改时,会给你们个文档,说明整改内容。

首先我们明确下需求:我们不是为了防止 Root 抓包,而是为了绕过工信部的审核。

那么问题在哪里呢?是在用户登录页面。工信部说的应该是是用户登录时,用户账号、密码是明文传输。

事实上你需要做的只是和服务器升级下接口即可,例如只需要将登录时账号、密码经过编码后,传递给服务器,服务器解码后,登录即可。

工信部也是委托第三方做的检测。第三方检测很恶心,它还会检测用户登录页面,然后弹出一个透明 Activity,骗用户输入账号、密码,还会要求你做防劫持。
HarryQu
2021-09-16 23:55:21 +08:00
我们 App 当时是被粤通网检测到违规。
coolcoffee
2021-09-17 00:32:18 +08:00
我觉得后端加一个网关或者中间件,然后前后端都用 RSA 单向公私钥加解密。没有什么是绝对安全的,但这个已经拦住绝大部分只会使用 Charles 、Fiddler 的工具小子了。

然后实施起来的话,接口做好新老版本共存机制。先尝试走加密协议,要是出错了就降级到明文协议。 这样至少过整改够了,万一整出问题还能有个补救。

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

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

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

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

© 2021 V2EX