一些Android开发死局
有些东西就是做不到,除非,加很多很多钱和时间。
一些V2EX帖子整理。
抓包
- 问下安卓如何防止 root 下抓包, app 接口请求并没有做加密措施
- 怎么防止用户自己调用网站 API 发送 POST 请求篡改数据
- 如何对 Android APP 抓取 HTTPS 包?
- APP抓包研究
TL;DR: 功夫不负有心人。没有彻底的办法。最好的办法永远是在服务端控制数据。
如果能用Firebase的话,可以第三方接入AppCheck来防止中间人。
一些精彩发言:
1 | kings0527 |
1 | icyalala |
客户端的挣扎
有证书就可以抓包。
Root后在任何API版本都可以装任何证书。
Android N(API 24)及之后,应用才可以强制只信任系统证书。之前可以不Root装用户证书。
据说iPhone装证书很容易。
搬起石头砸自己的脚的办法:
禁止代理
connection = (HttpURLConnection) url.openConnection(Proxy.NO_PROXY)
- 容易绕过(路由器抓包、开热点抓包)
- 谁还用
HttpURLConnection
呀,不适合现代应用
检测Root
- 容易绕过
- 可能检测错误
- 牺牲无辜的Root用户的体验
自定义证书、SSL Pinning
- Android N及之后才可以强制证书
- 复杂
保活
终极方案:
- 成为系统应用
- 成为国民应用,厂商会主动增加白名单
- 使用FCM(不适用于中国大陆)
现在已经没有更多奇技淫巧了。虽然一直有人声称有黑科技,但从未亲眼见过。
Foreground Service + Wake Lock是普通应用唯二能做的。此外可以多接入一些推送。
最后,也是最重要的一步,引导用户设置应用白名单,这样基本可以确保正常使用。
个人开发者 海外收款
TL;DR: 需要八仙过海各自踩坑
有公司专人来解决这个问题最好了: