iOS 防止 Charles 抓取数据
点击上方“iOS开发”,选择“置顶公众号”
关键时刻,第一时间送达!
作者:Maxdon
链接:https://www.jianshu.com/p/1ab83d726d3f
iOS开发整理发布,转载请联系作者获得授权
现在 APP 开发,数据的保密性越来越受重视,保密性高才不会让数据轻易被泄露,同时保护到用户和公司的利益。如何做到保密更加完善呢?怎么防止 Charles 获取数据呢?
1、通过 HTTP/1.1 及以上版本的 CONNECT 请求方式。CONNECT 请求方式是什么呢?开发中我们多数用的是 POST 和 GET 来向服务端请求数据。
CONNECT 是在 HTTP/1.1 协议中,HTTP/1.0 定义了三种请求方法: GET, POST 和 HEAD方法,HTTP/1.1 新增了五种请求方法:OPTIONS、 PUT、DELETE、 TRACE 和 CONNECT 方法。它主要是把服务器作为跳板,先验证用户名和密码等信息,再让服务器代替用户去访问其它网页,之后把数据返回给用户。对HTTP/1.1 的 CONNECT 有兴趣,可以查阅 HTTP代理协议 HTTP/1.1 的 CONNECT 方法:https://blog.csdn.net/kobejayandy/article/details/24606521
简书的PC端部分是如此实现。打开简书网页,Charles抓取到的
CONNECT 请求方式
2、使用自签名证书的应用和双向验证的应用。在抓取一些第三方应用的包时候,为什么很多时候都抓取不到数据呢?
其一,客户端通过指定的方式只信任某一个证书;其二,一般做法只有客户端验证服务端公钥证书是不是合法,但是某些 app,比如支付宝,采用双向验证的方式,在通信过程中,服务器会验证 app 的公钥证书,这时候,就没办法使用 Charles(中间人攻击的方式)进行抓包。
3、对返回数据进行加密(RAS保密 + token验证 & 效率更高的AES) 。
4、判断客户端当前是否设置了代理。这也是本人通过 NSURLProtocol 拦截请求后,判断是否设置了代理,实现了防止 Charles 抓取 APP 的数据。
具体当进行网络请求的时候,如果设置了代理,不允许进行访问,对支付宝 APP 抓包时候,设置了代理后打开,很多界面都是无法访问了,某部分界面不知是否通过这方式实现?有了解的,感谢分享下。?
判断客户端是否设置了代理,具体代码可以参考:iOS开发 如何判断网络请求是否开启了代理:https://www.jianshu.com/p/7e1bb0812df6
▼点击「阅读原文」进入程序员商城
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

随时掌握互联网精彩
- 1 促进民营经济健康发展高质量发展 7943215
- 2 特朗普希望中国领导人访美 中方回应 7901705
- 3 2025年8省份将不再分文理科 7885254
- 4 高水平对外开放再升级 7719730
- 5 国产剧告别“假穷人” 7646391
- 6 土拨鼠为什么会突然大叫 7512786
- 7 女子抱孩子深夜投河 孩子仅两岁 7448769
- 8 工作室辟谣胡歌得肺癌住院 7389526
- 9 男子时隔6年回老家发现老猫还在守家 7204559
- 10 假货境外转一圈成“海外购” 7103029