如何使用ATS提高应用的安全性
App Transport Security,簡短的說就是ATS,是iOS9和OS X El Capitan的一個新特性。App Transport Security 的目標(biāo)是提高Apple 操作系統(tǒng)的安全性以及在此操作系統(tǒng)上運(yùn)行的任何應(yīng)用的安全性。
基于HTTP傳輸數(shù)據(jù)的網(wǎng)絡(luò)請求都是明文。開啟App Transport Security后,網(wǎng)絡(luò)傳輸自動通過HTTPS傳輸而不是HTTP。
App Transport Security要求TLS (Transport Layer Security) 1.2或者更高。
關(guān)于App Transport Security,每個應(yīng)用都屬于4個大類當(dāng)中的一類。
只有HTTPS
如果你的應(yīng)用只基于支持HTTPS的服務(wù)器,那么你太幸運(yùn)了。你的應(yīng)用不需要做任何改變。但是,注意App Transport Security要求TLS 1.2而且它要求站點(diǎn)使用支持forward secrecy協(xié)議的密碼。證書也要求是符合ATS規(guī)格的。因此慎重檢查與你的應(yīng)用交互的服務(wù)器是不是符合ATS的要求非常重要。
混合
你的應(yīng)用與一個不符合ATS要求的服務(wù)器工作是很有可能的。在這種情況下,你需要告訴操作系統(tǒng)哪些站點(diǎn)是涉及到的然后在你的應(yīng)用的 Info.plist文件中指明哪些要求沒有達(dá)到。
這意味著對于每個與你應(yīng)用交互的站點(diǎn), 除了在你的應(yīng)用的 Info.plist中聲明的那些以外不強(qiáng)制要求App Transport Security,其它的都需要。你可以使用很多的預(yù)定義的keys值來配置例外(exceptions)。在下面的 Info.plist文件中,我們定義了3個例外。
api.insecuredomain.com
我們定義的第一個例外告訴ATS當(dāng)與這個子域交互的時候撤銷了必須使用HTTPS的要求。注意這個僅僅針對在例外中聲明了的子域。非常重要的一點(diǎn)是要理解NSExceptionAllowsInsecureHTTPLoads關(guān)鍵字并不僅僅只是與使用HTTPS相關(guān)。這個例外指明了對于那個域名,所有的App Transport Security的要求都被撤銷了。
cdn.domain.com
很可能你的應(yīng)用是與一個支持HTTPS傳輸數(shù)據(jù)的服務(wù)器交互,但是并沒有使用TLS 1.2或更高。在這種情況下,你定義一個例外,它指明應(yīng)該使用的最小的TLS的版本。這比完全撤銷那個域名的App Transport Security要更好更安全。
thatotherdomain.com
NSIncludesSubdomains關(guān)鍵字告訴 App Transport Security這個例外適用于這個特定域名的所有子域。這個例外還進(jìn)一步通過擴(kuò)展可接受的密碼列表來定義這個域名可以使用不支持forward secrecy(NSExceptionRequiresForwardSecrecy) ?協(xié)議的密碼。想了解更多關(guān)于forward secrecy的信息,我推薦你去看這個文章?Apple's technote。
撤銷
如果你在創(chuàng)建一個網(wǎng)頁瀏覽器,那么你有一個更大的麻煩。因?yàn)槟悴豢赡苤滥愕挠脩魧⒁L問那個網(wǎng)頁,你不可能指明這些網(wǎng)頁是否支持ATS要求且在HTTPS上傳輸。在這種情況下,除了全部撤銷 App Transport Security 沒有其它辦法。
非常重要的是你要明確的指明撤銷 App Transport Security。牢記App Transport Security是默認(rèn)強(qiáng)制執(zhí)行的。在你的應(yīng)用的Info.plist, 文件中,為NSAppTransportSecurity關(guān)鍵值添加一個字典。這個字典應(yīng)該包括一個關(guān)鍵字,NSAllowsArbitraryLoads,以及它的值要被設(shè)置為YES。如果你撤消了App Transport Security,下面內(nèi)容就是你的應(yīng)用的 Info.plist 文件應(yīng)該看起來像的東西:
有著例外的撤銷
第四個大類是當(dāng)你的應(yīng)用撤消了App Transport Security,,但同時定義了一些例外。這非常有用就是當(dāng)你的應(yīng)用從很多的服務(wù)器上取數(shù)據(jù),但是也要與一個你可控的API交互。在這種情況下,在應(yīng)用的Info.plist文件中指定任何加載都是被允許的,但是你也指定了一個或多個例外來表明哪些是必須要求 App Transport Security的。下面是Info.plist文件應(yīng)該會有的內(nèi)容:
?
轉(zhuǎn)載于:https://www.cnblogs.com/hialls/p/5125831.html
總結(jié)
以上是生活随笔為你收集整理的如何使用ATS提高应用的安全性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信用卡频频被降额,哪些行为最容易被降额封
- 下一篇: Testin云測与ARM 战略合作:推动