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