ios客戶端安全性問題分析及處理方式
目前,大部分的移動應用都是需要聯網,與伺服器進行通訊,獲取最新的資料。一提到網路,肯定就有大量和安全性相關的問題出來。所以,對於我們開發者而言,如何打造一個安全的App,是必須面對的問題。前段時間我專門對iOS移動應用安全性方面進行了研究,下面我們分析iOS應用中可能會存在的安全風險以及相對應的處理方式。
1、網路安全
在網路請求中,我們經常使用兩種請求方式:GET和POST。如果是用GET傳送請求,當我們採用明文的方式給伺服器傳送資料,資料裡面還包含一些敏感資料如賬號密碼,這些資料都是包裝在URL中,並且伺服器的訪問日誌會記錄,所以黑客一旦攻破伺服器,可以輕易獲得所有使用者的賬號密碼。POST相對於GET來說,要相對安全一些,我們發給伺服器的資料是包裝在請求體中,不會直接暴露在url中。但是其實POST也是不安全的,在MAC電腦上可以利用Charles軟體(如果在Windows下,可以使用Fiddler軟體)來將自己的電腦設定成代理伺服器,從而擷取應用的網路請求,所以GET和POST都是不安全的。這時,為了防止賬號密碼洩漏,我們要對其進行加密。加密的方式有很多種,最簡單的就是base64加密,但是base64 過於簡單,很容易破解,不推薦使用。第二種就是md5加密,其核心思想是從給定的資料中提取特徵碼,不容產生重複,安全性比較高,在電腦保安領域使用的比較廣泛,但是現在也有專門的網站對md5進行破解,為了使MD5加密更安全,我們會進行加鹽,HMac,加時間戳等,提高安全級別和破解難度。第三種就是對稱加密和非對稱加密。非對稱加密:事先生成一對用於加密的公私鑰,客戶端在登入時,使用公鑰將使用者的密碼加密後,將密文傳輸到伺服器。伺服器使用私鑰將密碼解密。這樣的做法,保證黑客即使截獲了加密後的密文,由於沒有私鑰,也無法還原出原始的密碼。
2、協議問題
iOS9.0 之前,做網路請求時時用http協議,但是http協議是不安全協議,很容易被攻破,在成功破解了通訊協議後,黑客可以模擬客戶端登入,進而偽造一些使用者行為,可能對使用者資料造成危害。像我們平常聽到的遊戲代練,刷分,其實是遊戲的通訊協議被破解,黑客製作出了代練的機器人程式。在iOS9.0後,蘋果推薦採用https協議進行網路資料傳輸。當然,如果自己手上有更好更安全的協議,可以用自己的。
3、本地檔案安全
iOS應用的資料在本地通常儲存在本地檔案或本地資料庫中。如果對本地的資料不進行加密處理,很可能被黑客篡改,所以我們要對重要的資料進行加密,根據重要程度選擇安全性可靠的方式。
4、原始碼安全
應用程式上架需要編譯成二進位制檔案,這些二進位制檔案也是存在安全隱患。黑客可以通知反編譯工具,對這個檔案進行反編譯。對於Objective-C程式碼,它常常可以反彙編到可以方便閱讀的程度,這對於程式的安全性,也是一個很大的危害。因為通過閱讀原始碼,黑客可以更加方便地分析出應用的通訊協議和資料加密方式。一般我們應對的方式給我們的程式碼加一些東西,混淆原始碼的內容,比如定義一些亂其八糟的巨集,比如打亂程式碼的順序等。這樣,就算檔案被反編譯成功,也需要花大量的時間去破解。