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