Funzionalità di sicurezza e privacy iOS

Questo articolo illustra l'uso della sicurezza e della privacy in iOS e sul modo in cui influiscono su un'app Xamarin.iOS.

Apple ha apportato diversi miglioramenti alla sicurezza e alla privacy in iOS 10 (e versioni successive) che aiuteranno lo sviluppatore a migliorare la sicurezza delle proprie app e garantire la privacy dell'utente finale. Questo articolo illustra l'implementazione di queste funzionalità in un'app Xamarin.iOS.

Miglioramenti generali

Le modifiche generali seguenti sono state apportate alla sicurezza e alla privacy in iOS 10:

  • L'API Common Data Security Architecture (CDSA) è stata deprecata e deve essere sostituita con l'API SecKey per generare chiavi asimmetriche.
  • La nuova NSAllowsArbitraryLoadsInWebContent chiave può essere aggiunta al file Info.plist di un'app e consentirà il caricamento corretto delle pagine Web mentre la protezione di Apple Transport Security (ATS) è ancora abilitata per il resto dell'app. Per altre informazioni, vedere la documentazione di App Transport Security .
  • Poiché i nuovi Appunti in iOS 10 e macOS Sierra consentono all'utente di copiare e incollare tra dispositivi, l'API è stata espansa per consentire a un clipboard di essere limitato a un dispositivo specifico e di essere cancellato automaticamente in un determinato punto. Inoltre, le lavagne denominate non sono più persistenti e devono essere sostituite con i contenitori di incollaboard condivisi.
  • Per tutte le connessioni SSL/TLS, la crittografia simmetrica RC4 è ora disabilitata per impostazione predefinita. Inoltre, l'API Trasporto sicuro non supporta più SSLv3 ed è consigliabile che lo sviluppatore smetta di usare la crittografia SHA-1 e 3DES il prima possibile.

Accesso ai dati utente privati

Le app in esecuzione in iOS 10 (o versioni successive) devono dichiarare in modo statico la finalità di accedere a funzionalità o informazioni utente specifiche immettendo una o più chiavi di privacy nei file Info.plist che spiegano all'utente perché l'app vuole ottenere l'accesso.

Importante

Le app che non forniscono le chiavi necessarie verranno terminate automaticamente dal sistema quando tentano di accedere a una delle funzionalità limitate o alle informazioni dell'utente, senza errori. Se un'app viene avviata in modo imprevisto in iOS 10, verificare che sia stato specificato tutto il file Info.plist richiesto.

Sono disponibili le chiavi correlate alla privacy seguenti:

  • Privacy - Apple Musica usage Description (NSAppleMusicUsageDescription) - Consente allo sviluppatore di descrivere perché l'app vuole accedere alla raccolta multimediale dell'utente.
  • Privacy - Descrizione utilizzo periferiche Bluetooth (NSBluetoothPeripheralUsageDescription) - Consente allo sviluppatore di descrivere perché l'app vuole accedere a Bluetooth nel dispositivo dell'utente.
  • Privacy - Descrizione utilizzo calendari (NSCalendarsUsageDescription) - Consente allo sviluppatore di descrivere il motivo per cui l'app vuole accedere al calendario dell'utente.
  • Privacy - Fotocamera Descrizione utilizzo (NSCameraUsageDescription) - Consente allo sviluppatore di descrivere perché l'app vuole accedere alla fotocamera del dispositivo.
  • Privacy - Descrizione utilizzo contatti (NSContactsUsageDescription) - Consente allo sviluppatore di descrivere perché l'app vuole accedere ai contatti dell'utente.
  • Privacy - Health Share Usage Description (NSHealthShareUsageDescription) - Consente allo sviluppatore di descrivere perché l'app vuole accedere ai dati sull'integrità dell'utente. Per altre informazioni, vedere Le informazioni di riferimento sulla classe HKHealthStore di Apple.
  • Privacy - Health Update Usage Description (NSHealthUpdateUsageDescription) - Consente allo sviluppatore di descrivere perché l'app vuole modificare i dati di integrità dell'utente. Per altre informazioni, vedere Le informazioni di riferimento sulla classe HKHealthStore di Apple.
  • Privacy - HomeKit Usage Description (NSHomeKitUsageDescription) - Consente allo sviluppatore di descrivere il motivo per cui l'app vuole accedere ai dati di configurazione HomeKit dell'utente.
  • Privacy - Location Always Usage Description (NSLocationAlwaysUsageDescription) - Consente allo sviluppatore di descrivere il motivo per cui l'app vuole avere sempre accesso alla posizione dell'utente.
  • [Deprecato] Privacy - Descrizione utilizzo località (NSLocationUsageDescription) - Consente allo sviluppatore di descrivere il motivo per cui l'app vuole accedere alla posizione utente. NOTA: questa chiave è stata deprecata in iOS 8 (e versioni successive). In sostituzione utilizzare NSLocationAlwaysUsageDescription o NSLocationWhenInUseUsageDescription.
  • Privacy - Posizione quando si usa la descrizione dell'utilizzo (NSLocationWhenInUseUsageDescription) - Consente allo sviluppatore di descrivere perché l'app vuole accedere alla posizione dell'utente mentre è in esecuzione.
  • [Deprecato] Privacy - Descrizione dell'utilizzo di Media Library : consente allo sviluppatore di descrivere il motivo per cui l'app vuole accedere alla libreria multimediale dell'utente. NOTA: questa chiave è stata deprecata in iOS 8 (e versioni successive). Utilizzare invece NSAppleMusicUsageDescription.
  • Privacy - Descrizione utilizzo microfono (NSMicrophoneUsageDescription) - Consente allo sviluppatore di descrivere perché l'app vuole accedere al microfono dei dispositivi.
  • Privacy - Descrizione utilizzo movimento (NSMotionUsageDescription) - Consente allo sviluppatore di descrivere perché l'app vuole accedere all'accelerometro del dispositivo.
  • Privacy - Descrizione utilizzo raccolta foto (NSPhotoLibraryUsageDescription) - Consente allo sviluppatore di descrivere perché l'app vuole accedere alla raccolta foto dell'utente.
  • Privacy - Promemoria Descrizione utilizzo (NSRemindersUsageDescription) - Consente allo sviluppatore di descrivere perché l'app vuole accedere ai promemoria dell'utente.
  • Privacy - Siri Usage Description (NSSiriUsageDescription) - Consente allo sviluppatore di descrivere perché l'app vuole inviare i dati utente a Siri.
  • Privacy - Descrizione utilizzo riconoscimento vocale (NSSpeechRecognitionUsageDescription) - Consente allo sviluppatore di descrivere perché l'app vuole inviare i dati utente ai server di riconoscimento vocale apple.
  • Privacy - Descrizione utilizzo provider TV (NSVideoSubscriberAccountUsageDescription) - Consente allo sviluppatore di descrivere il motivo per cui l'app vuole accedere all'account del provider TV dell'utente.

Per altre informazioni sull'uso delle chiavi Info.plist, vedere Informazioni di riferimento sulla chiave dell'elenco delle proprietà di Apple.

Impostazione delle chiavi di privacy

Si prenda l'esempio seguente di accesso a HomeKit in iOS 10 (e versioni successive), lo sviluppatore dovrà aggiungere la NSHomeKitUsageDescription chiave al file Info.plist dell'app e fornire una stringa che dichiara il motivo per cui l'app vuole accedere al database HomeKit dell'utente. Questa stringa verrà presentata all'utente la prima volta che esegue l'app:

An example NSHomeKitUsageDescription alert

Xamarin.iOS per Visual Studio attualmente non supporta la modifica delle chiavi di privacy Info.plist dall'editor del manifesto iOS predefinito. Sarà invece necessario usare l'editor PList generico, quindi eseguire le operazioni seguenti:

  1. Fare clic con il pulsante destro del mouse sul file Info.plist nel Esplora soluzioni e scegliere Apri con....

  2. Selezionare l'editor PList generico dall'elenco dei programmi per aprire il file, quindi fare clic su OK.

    Select the Generic PList Editor

  3. Fare clic sul + pulsante sull'ultima riga nell'editor per aggiungere una nuova voce all'elenco. Verrà chiamato "Proprietà personalizzata", con Il tipo impostato su String e un valore vuoto.

  4. Fare clic sul nome della proprietà e verrà visualizzato un elenco a discesa.

  5. Nell'elenco a discesa selezionare una chiave di privacy (ad esempio Privacy - HomeKit Usage Description):

    Select a Privacy key

  6. Immettere una descrizione nella colonna Valore per il motivo per cui l'app vuole accedere alla funzionalità o alle informazioni utente specificate:

    Enter a description

  7. Salvare le modifiche apportate al file.

Importante

Nell'esempio precedente, l'errore di impostare la NSHomeKitUsageDescription chiave nel file Info.plist genera un errore dell'app in modo invisibile all'utente (chiusa dal sistema in fase di esecuzione) senza errori durante l'esecuzione in iOS 10 (o versione successiva).

Riepilogo

Questo articolo ha illustrato le modifiche alla sicurezza e alla privacy apportate da Apple in iOS 10 e come influiscono su un'app Xamarin.iOS.