Funkcje zabezpieczeń i prywatności w systemie iOS
W tym artykule opisano pracę z zabezpieczeniami i prywatnością w systemie iOS oraz ich wpływ na aplikację platformy Xamarin.iOS.
Firma Apple wprowadziła kilka ulepszeń zarówno w zakresie zabezpieczeń, jak i prywatności w systemie iOS 10 (i nowszych), które pomogą deweloperowi poprawić bezpieczeństwo swoich aplikacji i zapewnić prywatność użytkownika końcowego. W tym artykule omówiono implementację tych funkcji w aplikacji platformy Xamarin.iOS.
Ogólne ulepszenia
W systemie iOS 10 wprowadzono następujące ogólne zmiany dotyczące zabezpieczeń i prywatności:
- Interfejs API Common Data Security Architecture (CDSA) został przestarzały i powinien zostać zastąpiony interfejsem API SecKey w celu wygenerowania kluczy asymetrycznych.
- Nowy
NSAllowsArbitraryLoadsInWebContent
klucz można dodać do pliku Info.plist aplikacji i zezwolić na poprawne ładowanie stron internetowych, podczas gdy ochrona usługi Apple Transport Security (ATS) jest nadal włączona w pozostałej części aplikacji. Aby uzyskać więcej informacji, zobacz dokumentację usługi App Transport Security . - Ponieważ nowy Schowek w systemach iOS 10 i macOS Sierra umożliwia użytkownikowi kopiowanie i wklejanie między urządzeniami, interfejs API został rozszerzony, aby umożliwić schowek ograniczony do określonego urządzenia i być znacznikiem czasu wyczyszczone automatycznie w danym momencie. Ponadto nazwane tablice wklejania nie są już utrwalane i powinny zostać zastąpione udostępnionymi kontenerami tablicy wklejanej.
- W przypadku wszystkich połączeń SSL/TLS szyfrowanie symetryczne RC4 jest teraz domyślnie wyłączone. Ponadto interfejs API bezpiecznego transportu nie obsługuje już protokołu SSLv3 i zaleca się, aby deweloper przestał używać kryptografii SHA-1 i 3DES tak szybko, jak to możliwe.
Uzyskiwanie dostępu do danych użytkownika prywatnego
Aplikacje działające w systemie iOS 10 (lub nowszym) muszą statycznie zadeklarować zamiar uzyskania dostępu do określonych funkcji lub informacji o użytkowniku, wprowadzając co najmniej jeden klucz prywatności w plikach Info.plist , które wyjaśniają użytkownikowi, dlaczego aplikacja chce uzyskać dostęp.
Ważne
Aplikacje, które nie zapewniają wymaganych kluczy, zostaną w trybie dyskretnym zakończone przez system podczas próby uzyskania dostępu do jednej z ograniczonych funkcji lub informacji o użytkowniku bez błędu! Jeśli aplikacja nieoczekiwanie kończy się niepowodzeniem w systemie iOS 10, upewnij się, że określono wszystkie wymagane pliki Info.plist .
Dostępne są następujące klucze związane z prywatnością:
- Prywatność — Opis użycia usługi Apple Music (
NSAppleMusicUsageDescription
) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do biblioteki multimediów użytkownika. - Prywatność — Opis użycia urządzeń peryferyjnych Bluetooth (
NSBluetoothPeripheralUsageDescription
) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do funkcji Bluetooth na urządzeniu użytkownika. - Prywatność — opis użycia kalendarzy (
NSCalendarsUsageDescription
) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do kalendarza użytkownika. - Prywatność — Aparat opis użycia (
NSCameraUsageDescription
) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do aparatu urządzenia. - Prywatność — opis użycia kontaktów (
NSContactsUsageDescription
) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do kontaktów użytkownika. - Prywatność — opis użycia udziału kondycji (
NSHealthShareUsageDescription
) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do danych dotyczących kondycji użytkownika. Aby uzyskać więcej informacji, zobacz Dokumentację klasy HKHealthStore firmy Apple. - Prywatność — opis użycia aktualizacji kondycji (
NSHealthUpdateUsageDescription
) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce edytować dane dotyczące kondycji użytkownika. Aby uzyskać więcej informacji, zobacz Dokumentację klasy HKHealthStore firmy Apple. - Prywatność — Opis użycia zestawu HomeKit (
NSHomeKitUsageDescription
) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do danych konfiguracji zestawu HomeKit użytkownika. - Prywatność — zawsze opis użycia lokalizacji (
NSLocationAlwaysUsageDescription
) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce zawsze mieć dostęp do lokalizacji użytkownika. - [Przestarzałe] Prywatność — opis użycia lokalizacji (
NSLocationUsageDescription
) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do lokalizacji użytkownika. UWAGA: ten klucz został przestarzały w systemie iOS 8 (i nowszym). Użyj poleceniaNSLocationAlwaysUsageDescription
lubNSLocationWhenInUseUsageDescription
zamiast tego. - Prywatność — lokalizacja w przypadku użycia opisu użycia (
NSLocationWhenInUseUsageDescription
) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do lokalizacji użytkownika podczas jej działania. - [Przestarzałe] Prywatność — opis użycia biblioteki multimediów — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do biblioteki multimediów użytkownika. UWAGA: ten klucz został przestarzały w systemie iOS 8 (i nowszym). Użycie w zamian parametru
NSAppleMusicUsageDescription
. - Prywatność — opis użycia mikrofonu (
NSMicrophoneUsageDescription
) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do mikrofonu urządzeń. - Prywatność — opis użycia ruchu (
NSMotionUsageDescription
) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do akcelerometru urządzenia. - Prywatność — opis użycia biblioteki zdjęć (
NSPhotoLibraryUsageDescription
) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do biblioteki zdjęć użytkownika. - Prywatność — opis użycia przypomnień (
NSRemindersUsageDescription
) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do przypomnień użytkownika. - Prywatność — Opis użycia Siri (
NSSiriUsageDescription
) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce wysyłać dane użytkownika do Siri. - Prywatność — opis użycia rozpoznawania mowy (
NSSpeechRecognitionUsageDescription
) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce wysyłać dane użytkownika na serwery rozpoznawania mowy firmy Apple. - Prywatność — opis użycia dostawcy telewizji (
NSVideoSubscriberAccountUsageDescription
) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do konta dostawcy telewizji użytkownika.
Aby uzyskać więcej informacji na temat pracy z kluczami Info.plist, zobacz Dokumentacja klucza listy właściwości informacji firmy Apple.
Ustawianie kluczy prywatności
Zapoznaj się z poniższym przykładem uzyskiwania dostępu do zestawu HomeKit w systemie iOS 10 (i nowszym), deweloper musi dodać NSHomeKitUsageDescription
klucz do pliku Info.plist aplikacji i podać ciąg deklarujący, dlaczego aplikacja chce uzyskać dostęp do bazy danych HomeKit użytkownika. Ten ciąg zostanie wyświetlony użytkownikowi przy pierwszym uruchomieniu aplikacji:
Platforma Xamarin.iOS dla programu Visual Studio obecnie nie obsługuje edytowania kluczy prywatności Info.plist z poziomu domyślnego edytora manifestu systemu iOS. Zamiast tego należy użyć ogólnego edytora PList, więc wykonaj następujące czynności:
Kliknij prawym przyciskiem myszy plik Info.plist w Eksplorator rozwiązań i wybierz polecenie Otwórz za pomocą....
Wybierz ogólny edytor PList z listy programów, aby otworzyć plik, a następnie kliknij przycisk OK.
Kliknij przycisk w + ostatnim wierszu w edytorze, aby dodać nowy wpis do listy. Będzie to nazywane "Właściwością niestandardową" z typem ustawionym na
String
i pustą wartością.Kliknij nazwę właściwości, a zostanie wyświetlona lista rozwijana.
Z listy rozwijanej wybierz klucz prywatności (na przykład Prywatność — opis użycia zestawu homekit):
Wprowadź opis w kolumnie Wartość, aby dowiedzieć się, dlaczego aplikacja chce uzyskać dostęp do danej funkcji lub informacji o użytkowniku:
Zapisz zmiany w pliku.
Ważne
W powyższym przykładzie niepowodzenie ustawienia NSHomeKitUsageDescription
klucza w pliku Info.plist spowoduje, że aplikacja w trybie dyskretnym kończy się niepowodzeniem (zamknięciem przez system w czasie wykonywania) bez błędu podczas uruchamiania w systemie iOS 10 (lub nowszym).
Podsumowanie
W tym artykule opisano zmiany w zabezpieczeniach i prywatności wprowadzone przez firmę Apple w systemie iOS 10 oraz sposób ich wpływu na aplikację platformy Xamarin.iOS.