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 习近平G20里约峰会展现大国担当 7958422
- 2 一个金镯子省出1200元 金价真跌了 7966999
- 3 多国驻乌克兰大使馆因袭击风险关闭 7842294
- 4 二十国集团里约峰会将会卓有成效 7711746
- 5 俄导弹击中乌水电站大坝 7647824
- 6 孙颖莎王艺迪不敌日本削球组合 7595220
- 7 高三女生酒后被强奸致死?检方回应 7466062
- 8 第一视角记录虎鲨吞下手机全程 7322197
- 9 73岁王石独自带娃被偶遇 7249021
- 10 智慧乌镇点亮数字经济新未来 7110455