iOS 安全性和隱私權功能
本文涵蓋在 iOS 中使用安全性和隱私權,以及它們如何影響 Xamarin.iOS 應用程式。
Apple 對 iOS 10 中的安全性和隱私權進行了多項增強功能,可協助開發人員改善其應用程式的安全性,並確保終端使用者的隱私權。 本文將討論如何在 Xamarin.iOS 應用程式中實作這些功能。
一般增強功能
已對 iOS 10 中的安全性和隱私權進行下列一般變更:
- Common Data Security Architecture (CDSA) API 已被取代,應該取代為 SecKey API 來產生非對稱密鑰。
- 新的
NSAllowsArbitraryLoadsInWebContent
金鑰可以新增至應用程式的 Info.plist 檔案,並允許網頁正確載入,而 Apple Transport Security (ATS) 保護仍會針對應用程式的其餘部分啟用。 如需詳細資訊,請參閱我們的 應用程式傳輸安全性 檔。 - 由於 iOS 10 和 macOS Sierra 中的新剪貼簿可讓使用者在裝置之間複製和貼上,因此 API 已展開,以允許剪貼簿限制為特定裝置,並在指定時間點自動清除時間戳。 此外,命名貼上板不再保存,而且應該取代為共用貼上板容器。
- 針對所有 SSL/TLS 連線,RC4 對稱加密現在預設為停用。 此外,安全傳輸 API 不再支援 SSLv3,因此建議開發人員儘快停止使用 SHA-1 和 3DES 密碼編譯。
存取私人用戶數據
在 iOS 10 上執行的應用程式(或更新版本)必須藉由在其 Info.plist 檔案中輸入一或多個隱私權密鑰,以靜態方式宣告其存取特定功能或使用者資訊的意圖,以向使用者說明應用程式想要取得存取權的原因。
重要
當系統嘗試存取其中一個受限制的功能或使用者資訊時,無法提供所需密鑰的應用程式將會以無訊息方式終止, 而不會發生錯誤! 如果應用程式在 iOS 10 上意外啟動失敗,請確定已指定所有必要的 Info.plist 。
下列隱私權相關金鑰可供使用:
- 隱私權 - Apple Music 使用量描述 (
NSAppleMusicUsageDescription
) - 可讓開發人員描述應用程式想要存取使用者媒體媒體櫃的原因。 - 隱私權 - 藍牙 周邊使用描述 (
NSBluetoothPeripheralUsageDescription
) - 允許開發人員描述應用程式想要存取使用者裝置上 藍牙 的原因。 - 隱私權 - 行事曆使用方式描述 (
NSCalendarsUsageDescription
) - 可讓開發人員描述應用程式想要存取使用者行事曆的原因。 - 隱私權 - 相機 使用量描述 (
NSCameraUsageDescription
) - 允許開發人員描述應用程式想要存取裝置相機的原因。 - 隱私權 - 連絡人使用方式描述 (
NSContactsUsageDescription
) - 允許開發人員描述應用程式想要存取使用者連絡人的原因。 - 隱私權 - 健康情況共用使用描述 (
NSHealthShareUsageDescription
) - 允許開發人員描述應用程式想要存取使用者健康情況數據的原因。 如需詳細資訊,請參閱Apple的 HKHealthStore 類別參考。 - 隱私權 - 健康情況更新使用說明 (
NSHealthUpdateUsageDescription
) - 可讓開發人員描述應用程式想要編輯使用者健康情況數據的原因。 如需詳細資訊,請參閱Apple的 HKHealthStore 類別參考。 - 隱私權 - HomeKit 使用量描述 (
NSHomeKitUsageDescription
) - 可讓開發人員描述應用程式想要存取使用者 HomeKit 設定數據的原因。 - 隱私權 - 位置永遠使用方式描述 (
NSLocationAlwaysUsageDescription
) - 可讓開發人員描述應用程式為何一律能夠存取使用者的位置。 - [已淘汰] 隱私權 - 位置使用方式描述 (
NSLocationUsageDescription
) - 可讓開發人員描述應用程式想要存取使用者位置的原因。 注意:此金鑰已在 iOS 8 中已被取代(且更新版本)。 請改用NSLocationAlwaysUsageDescription
或NSLocationWhenInUseUsageDescription
。 - 隱私權 - 使用使用方式描述 時的位置 (
NSLocationWhenInUseUsageDescription
) - 可讓開發人員描述應用程式在執行時想要存取使用者位置的原因。 - [已淘汰] 隱私權 - 媒體櫃使用說明 - 可讓開發人員描述應用程式想要存取使用者媒體櫃的原因。 注意:此金鑰已在 iOS 8 中已被取代(且更新版本)。 請改用
NSAppleMusicUsageDescription
。 - 隱私權 - 麥克風使用方式描述 (
NSMicrophoneUsageDescription
) - 允許開發人員描述應用程式想要存取裝置麥克風的原因。 - 隱私權 - 動作使用描述 (
NSMotionUsageDescription
) - 可讓開發人員描述應用程式想要存取裝置加速計的原因。 - 隱私權 - 相片庫使用說明 (
NSPhotoLibraryUsageDescription
) - 可讓開發人員描述應用程式想要存取使用者相片庫的原因。 - 隱私權 - 提醒使用說明 (
NSRemindersUsageDescription
) - 可讓開發人員描述應用程式想要存取使用者提醒的原因。 - 隱私權 - Siri 使用量描述 (
NSSiriUsageDescription
) - 可讓開發人員描述應用程式想要將使用者數據傳送至 Siri 的原因。 - 隱私權 - 語音辨識使用方式描述 (
NSSpeechRecognitionUsageDescription
) - 可讓開發人員描述應用程式想要將使用者數據傳送至 Apple 語音辨識伺服器的原因。 - 隱私權 - 電視提供者使用說明 (
NSVideoSubscriberAccountUsageDescription
) - 可讓開發人員描述應用程式想要存取使用者電視提供者帳戶的原因。
如需使用 Info.plist 金鑰的詳細資訊,請參閱 Apple 的資訊屬性清單金鑰參考。
設定隱私權金鑰
採用下列在 iOS 10 上存取 HomeKit 的範例(以及更新版本),開發人員必須將密鑰新增 NSHomeKitUsageDescription
至應用程式的 Info.plist 檔案,並提供字元串,以宣告應用程式為何想要存取使用者的 HomeKit 資料庫。 此字串會在使用者第一次執行應用程式時向使用者顯示:
Xamarin.iOS for Visual Studio 目前不支援從預設 iOS 指令清單編輯器中編輯 Info.plist 隱私權密鑰。 相反地,您必須使用泛型 PList 編輯器,因此請執行下列動作:
以滑鼠右鍵按兩下 方案總管中的Info.plist檔案,然後選取[開啟...]。
從程式清單中選取 [ 一般 PList 編輯器 ] 以開啟檔案,然後按兩下 [ 確定]。
+按兩下編輯器中最後一個資料列上的按鈕,將新專案新增至清單。 這稱為「自定義屬性」,並將 Type 設定為
String
,且值為空值。按兩下屬性名稱,隨即會出現下拉式清單。
從下拉式清單中,選取隱私權密鑰(例如 Privacy - HomeKit 使用量描述):
在 [值] 資料列中輸入描述,瞭解應用程式想要存取指定功能或使用者資訊的原因:
儲存對檔案所做的變更。
重要
在上述範例中,在 Info.plist 檔案中設定金鑰失敗NSHomeKitUsageDescription
會導致應用程式在運行時間以無訊息方式失敗(由系統在運行時間關閉),而不會在 iOS 10 中執行時發生錯誤(或更新版本)。
摘要
本文涵蓋 Apple 在 iOS 10 中所做的安全性和隱私權變更,以及它們如何影響 Xamarin.iOS 應用程式。