【iOS】客戶端安全性問題分析及處理方式
目前,大部分的移動應用都是需要聯網,與伺服器進行通訊,獲取最新的資料。一提到網路,肯定就有大量和安全性相關的問題出來。所以,對於我們開發者而言,如何打造一個安全的App,是必須面對的問題。前段時間我專門對iOS移動應用安全性方面進行了研究,下面我們分析iOS應用中可能會存在的安全風險以及相對應的處理方式。
1、網路安全
在網路請求中,我們經常使用兩種請求方式:GET和POST。如果是用GET傳送請求,當我們採用明文的方式給伺服器傳送資料,資料裡面還包含一些敏感資料如賬號密碼,這些資料都是包裝在URL中,並且伺服器的訪問日誌會記錄,所以黑客一旦攻破伺服器,可以輕易獲得所有使用者的賬號密碼。
2、協議問題
iOS9.0 之前,做網路請求時時用http協議,但是http協議是不安全協議,很容易被攻破,在成功破解了通訊協議後,黑客可以模擬客戶端登入,進而偽造一些使用者行為,可能對使用者資料造成危害。像我們平常聽到的遊戲代練,刷分,其實是遊戲的通訊協議被破解,黑客製作出了代練的機器人程式。在iOS9.0後,蘋果推薦採用https協議進行網路資料傳輸。當然,如果自己手上有更好更安全的協議,可以用自己的。
3、本地檔案安全
iOS應用的資料在本地通常儲存在本地檔案或本地資料庫中。如果對本地的資料不進行加密處理,很可能被黑客篡改,所以我們要對重要的資料進行加密,根據重要程度選擇安全性可靠的方式。
4、原始碼安全
應用程式上架需要編譯成二進位制檔案,這些二進位制檔案也是存在安全隱患。黑客可以通知反編譯工具,對這個檔案進行反編譯。對於Objective-C程式碼,它常常可以反彙編到可以方便閱讀的程度,這對於程式的安全性,也是一個很大的危害。因為通過閱讀原始碼,黑客可以更加方便地分析出應用的通訊協議和資料加密方式。一般我們應對的方式給我們的程式碼加一些東西,混淆原始碼的內容,比如定義一些亂其八糟的巨集,比如打亂程式碼的順序等。這樣,就算檔案被反編譯成功,也需要花大量的時間去破解。