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