當前位置:成語大全網 - 新華字典 - 蘋果文檔翻譯 iOS10 NSAppTransportSecurity

蘋果文檔翻譯 iOS10 NSAppTransportSecurity

NSAppTransportSecurity (對應的值為字典類型)被用來定義 app 在進行網絡請求時的安全設定:為現有安全機制設定特例,或者開啟新的安全特性。

在蘋果的開發平臺上,有壹種被稱為 App Transport Security(ATS) 的網絡安全機制,適用於 app 以及 app extension,默認開啟。這項機制確保 app 在進行網絡訪問時,使用業界標準的,沒有已知重大安全隱患的協議和加密方式,以此確保用戶的隱私和數據完整性。從而培養用戶對您的 app 的信任。

通過在 info.plist 中配置這個鍵,開發者可以自定義網絡安全策略。例如:

對 NSAppTransportSecurity 的支持自 iOS9.0,OS X v10.11 開始,適用於 app 和 app extension。

自 iOS10.0,macOS 10.12 開始,增加了對下列子鍵的支持:

對於使用 iOS9.0, OS X v10.11 SDK 及以上的 app 來說,ATS(App Transport Security)默認開啟, NSAllowsArbitraryLoads 是字典 NSAppTransportSecurity 的根鍵,默認值 NO 。

在啟用 ATS 的情況下,所有的 HTTP 請求必須為 HTTPS( RFC 2818 ) 連接。任何不安全的 HTTP 請求都將失敗。ATS 使用 TLS(Transport Layer Security)v1.2( RFC 5246 )。更多關於安全連接的信息,請查閱 HTTPS Server Trust Evaluation 。

下面是字典 NSAppTransportSecurity 的總體結構,所有鍵都是非必填項:

可以看出,所有鍵可以分為兩類:主鍵,這些鍵用來定義 app 的總體 ATS 策略;子鍵,即 NSExceptionDomains 下面的鍵,使用這些鍵針對某個域名單獨配置。

主鍵包括:

閱讀 表2 ,獲取關於上述主鍵的詳細信息。

所有的子鍵都屬於 NSExceptionDomain 。向 Info.plist 中添加這壹主鍵:

例如,及時之前設置 NSAllowsArbitraryLoadsInMedia 為 YES,然而 NSExceptionDomain 所代表的域名依然不能訪問不安全的媒體內容。

基於這樣的設定,可以針對域名進行 ATS 配置,增加或減少安全措施。例如:

還參考 Certificate Transparency ,保證訪問特定域名時的安全,詳情見 Certificate Transparency 。

NSExceptionDomains 字典構成:

閱讀 表3 ,獲取關於 NSExceptionDomains 的進壹步詳細信息。

NSURLSession 以及所有與其相關的 API 都實現了對 ATS 的支持;如果您的 app 基於 iOS9.0 SDK 或 OS X v10.11 SDK 以上版本開發,ATS 自動開啟。(較老的 NSURLConnection 同樣會在上述 SDK 中開啟對 ATS 的支持。)然而,在使用底層網絡 API 或第三方網絡庫時,無法受到 ATS 的保護。

iOS9.0 或 OS X v10.11 以下版本,不支持 ATS, NSAppTransportSecurity 會被操作系統忽略。當 ATS 不可用時,系統將根據 RFC 2818 提供標準的 HTTPS 安全策略,對服務端進行驗證。

當您的 app 運行在 iOS9.0 或者 OS X v10.11以下時,網絡連接仍然可用,但 ATS 不起作用。

ATS 只針對 公***域名 起效。ATS 對已下連接無效:

為了連接非法域名或本地域名,需要將 NSAllowsLocalNetworking 設置為 YES。

在 ATS 完全開啟的情況下,系統要求 app 的 HTTPS 連接必須滿足以下要求:

上面的標準,未來可能會發生變化。但不會影響到 app 二進制包的兼容性。

暫略

能否自行改寫服務器授信校驗規則,取決於 ATS 是否針對某個域名開啟。解釋如下:

某些對 ATS 的配置會引發 App Store 的審核,開發者必須說明原因。這些鍵有:

以下是壹些原因說明例子,供參考:

向 App Store 提交審核時,開發者應主動提供足夠的信息,以便解釋 app 無法使用安全連接的原因。

表2列出了 NSAppTransportSecurity 字典所有主鍵信息,通過定義這些主鍵,開發者可以配置 app 的網絡行為。同 NSExceptionDomains 相關的子鍵信息請查看表3。

表2 ATS 字典主鍵

表3列舉了用來針對某個域名進行網絡安全配置所使用的鍵。

表3 針對某個域名進行網絡安全配置的子鍵

下面介紹 NSAppTransportSecurity 的常見配置:

不影響整體 ATS 策略,只針對特定服務器進行不安全的網絡請求——例如,從圖片服務器請求圖片——可在 Info.plist 中做如下配置:

重要: 使用上述配置之前,請註意其可能帶來的潛在威脅。例如,通過 HTTP 連接從服務器獲取媒體資源,可能帶來如下風險:

不影響整體 ATS 策略,只針對特定服務器降低 HTTPS 的安全等級——包括使用較老版本的 TLS / SSL 協議,不支持正向保密——可在 Info.plist 中做如下配置:

假設正在開發壹款瀏覽器應用,需要能夠讓用戶訪問任意 URL。這種情況下,開發者應該針對受控服務器使用安全連接,例如用於發布 app 更新的服務器。

為了能夠讓針對受控服務器的訪問享受 ATS 保護,同時保證其他不安全訪問可用,可在 Info.plist 中做如下配置:

暫略

暫略