iOS 防止 Charles 抓取數據

? ? 現在 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 方法。

? ? 簡書的PC端部分是如此實現。打開簡書網頁,Charles抓取到的 <unknown> 中,可以見到它的 Method 為 CONNECT 請求方式。

CONNECT 請求方式

? ? 2、使用自簽名證書的應用和雙向驗證的應用。在抓取一些第三方應用的包時候,為什么很多時候都抓取不到數據呢?

? ? 其一,客戶端通過指定的方式只信任某一個證書;其二,一般做法只有客戶端驗證服務端公鑰證書是不是合法,但是某些 app,比如支付寶,采用雙向驗證的方式,在通信過程中,服務器會驗證 app 的公鑰證書,這時候,就沒辦法使用 Charles(中間人攻擊的方式)進行抓包。

? ? 3、對返回數據進行加密(RAS保密 + token驗證 ?& ?效率更高的AES)?。

? ? 4、判斷客戶端當前是否設置了代理。這也是本人通過?NSURLProtocol 攔截請求后,判斷是否設置了代理,實現了防止 Charles 抓取 APP 的數據。

? ? 具體當進行網絡請求的時候,如果設置了代理,不允許進行訪問,對支付寶 APP 抓包時候,設置了代理后打開,很多界面都是無法訪問了,某部分界面不知是否通過這方式實現?有了解的,感謝分享下。??

? ? 判斷客戶端是否設置了代理,具體代碼可以參考:iOS開發 如何判斷網絡請求是否開啟了代理。

???For The Good App.

參考:

? ??iOS Charles 抓包 https 實戰并篡改返回數據

? ? ?Android 系統各個版本上https的抓包

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網絡請求組件 FMDB本地數據庫組件 SD...
    陽明AGI閱讀 16,003評論 3 119
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,869評論 18 139
  • 早晨5點不到就醒了,睜著眼睛腦子里放著電影配合窗外淅淅瀝瀝的春雨,還真是有聲有色!到公司更早了,喜歡在空無一人的大...
    兮兮0225閱讀 197評論 0 0
  • 記得自己剛剛分手的時間里,總會想方設法地去找前女友聊天。其實自己知道這樣做不對,但因為抱著可以重新開始的念想,就像...
    一人吖閱讀 143評論 0 0
  • 第七章 暗中保護 待李奕天的背影消失在街道盡頭,小二沖著在柜臺打瞌睡的大漢喝道:“掌柜來了!”大漢頓時精神一振...
    云中闕歌閱讀 599評論 0 0