如今是移動互聯網時代,智能手機幾乎可以完成所有想做的事情。感謝數以百萬計的應用程序,它們可以幫助我們完成所需的事情。無論是維護您在旅途中管理財務信息的時間表,所有事情都可以通過運行在我們智能手機上的移動應用來完成。由于這些應用程序可以訪問大量機密信息,因此作為開發人員,在我們開發應用程序時,我們需要遵循最高的安全標準,以使沒有資格獲得此信息的人無法訪問這些信息。
對于iOS設備,每天有超過十億的活動設備在使用iOS應用程序。在這里,我正在編譯iOS開發人員在開發應用程序時應牢記的各種安全實踐。
1.在移動應用中啟用ATS
隨著iOS 9和ELCapitan的發布,蘋果公司發布了ATS,該應用程序強制應用程序僅連接到安全網絡。這意味著應用程序與外界的任何連接都必須使用HTTPS協議和TLS1.2。
換句話說,ATS強制應用程序僅建立安全連接,而不使用HTTP。如果需要,可以通過在plist中進行顯式輸入來明確提及異常。
2. SSL證書固定
此技術對于應對MITM攻擊非常有效。SSL在“信任鏈”的基礎上工作。當應用程序/客戶端連接到服務器時,客戶端將檢查接收到的服務器的SSL證書是否受任何SSL證書頒發機構的信任。
這樣可以確保應用僅與指定服務器通信。App / Client捆綁了指定服務器的SSL證書,因此它可以與連接到服務器和本地證書時收到的SSL證書匹配。詳細信息僅需一篇文章。請繼續關注,將來我將就這些細節撰寫一篇文章。
3.將信息存儲在KeyChain中,而不是NSUserDefaults中
NSUserDefaults為我們提供了一種方法,可以保存在應用程序啟動和設備重啟之間需要保留的少量信息。保存為UserDefaults一部分的所有信息均以純文本格式保存在plist中,該列表未加密,任何有權訪問該設備的人都可以讀取。
如果我們想以加密形式保存信息,則需要使用KeyChain,這是一個加密容器,用于存儲應用程序和安全服務的密碼。Apple在Mac OS和iOS中使用相同的技術進行密碼管理。
4.避免將機密信息作為代碼存儲庫的一部分
任何秘密信息都不應成為存儲庫/代碼庫的一部分,而應使用在構建應用程序時注入的配置文件或環境變量。Xcode Config文件是一個不錯的選擇,該文件維護與特定目標有關的信息。一個使用案例是API密鑰,我們不應該將API密鑰作為代碼庫的一部分。我們可以使用包含API密鑰的配置文件。該文件可以在公司網絡內部托管,并且在構建應用程序和作為構建過程的一部分注入時可以讀取。
5.越獄檢測
黑客只需在越獄設備上花費很少的精力,就可以輕易地破壞應用程序的行為和邏輯。作為開發人員,我們需要確保使黑客盡可能難以獲取應用程序的內部細節。我們絕對應該添加邏輯,以在啟動應用程序時首先檢查越獄設備。并通知用戶后,可能會終止該應用程序。
6.僅調試日志
開發人員使用調試消息作為記錄應用程序行為的好方法。在開發應用程序時,這非常有用。在開發應用程序時,我們傾向于記錄一些信息以幫助開發人員構建功能。但是,如果黑客可以訪問它,則可以暴露該機密信息和該應用程序的內部運行情況。為了確保我們不會在提交到存儲的應用程序的版本上記錄消息,我們只需執行以下操作即可對應用程序處于調試模式下的日志進行基本檢查。
#if DEBU
Gprint("log")
#endif
我們可以更進一步,制作一個記錄器,該記錄器將處理通過它的每個日志。請繼續關注,我將單獨寫一篇詳細的文章來介紹這一點。
7.第三方圖書館的使用
第三方庫是避免在移動應用中重新創建很多我們想做的事情的好方法。它們無疑為我們節省了很多時間,同時在使用第三方應用程序時需要注意一些事項。這些庫始終有將有害代碼注入我們的代碼庫的風險。
8.文件數據保護
每當我們在應用程序中保存任何文件時,都應使用這些選項來保存信息是一種安全的方法。
· 全面保護
· 除非打開,否則受保護
· 在首次用戶身份驗證之前受保護
· 無保護
9.屏幕錄制和捕獲
通過屏幕記錄或屏幕快照,可以從應用程序中暴露很多敏感信息。此安全檢查在銀行應用程序中起著至關重要的作用,如果執行屏幕截圖或屏幕錄制,安全交易細節可能會受到損害。
上述就是關于如何保護iOS應用程序的網絡安全的全部內容,想了解更多關于網絡安全的信息,請繼續關注中培偉業。