iOS Güvenlik ve Gizlilik Özellikleri

Bu makale, iOS'ta güvenlik ve gizlilikle çalışmayı ve bunların Xamarin.iOS uygulamasını nasıl etkilediğini kapsar.

Apple, iOS 10'da (ve üzeri) hem güvenlik hem de gizlilik üzerinde geliştiricinin uygulamalarının güvenliğini iyileştirmesine ve son kullanıcının gizliliğini sağlamasına yardımcı olacak çeşitli geliştirmeler yaptı. Bu makalede, bu özelliklerin bir Xamarin.iOS uygulamasında uygulanması ele alınacaktır.

Genel Geliştirmeler

iOS 10'da Güvenlik ve Gizlilik konusunda aşağıdaki genel değişiklikler yapılmıştır:

  • Common Data Security Architecture (CDSA) API'sinin kullanım dışı bırakıldı ve asimetrik anahtarlar oluşturmak için SecKey API'siyle değiştirilmesi gerekir.
  • Yeni NSAllowsArbitraryLoadsInWebContent anahtar bir uygulamanın Info.plist dosyasına eklenebilir ve Apple Transport Security (ATS) koruması uygulamanın geri kalanında hala etkinken web sayfalarının düzgün yüklenmesine izin verir. Daha fazla bilgi için lütfen App Transport Security belgelerimize bakın.
  • iOS 10 ve macOS Sierra'daki yeni Pano, kullanıcının cihazlar arasında kopyalayıp yapıştırmasına izin verdiğinden, API bir panonun belirli bir cihazla sınırlı olmasına ve belirli bir noktada otomatik olarak temizlenecek zaman damgasına sahip olmasına izin verecek şekilde genişletildi. Ayrıca, adlandırılmış yapıştırma panoları artık kalıcı değildir ve paylaşılan yapıştırma panosu kapsayıcılarıyla değiştirilmelidir.
  • Tüm SSL/TLS bağlantıları için RC4 simetrik şifrelemesi varsayılan olarak devre dışı bırakılmıştır. Ayrıca, Güvenli Aktarım API'si artık SSLv3'i desteklememektedir ve geliştiricinin mümkün olan en kısa sürede SHA-1 ve 3DES şifrelemesini kullanmayı durdurması önerilir.

Özel Kullanıcı Verilerine Erişme

iOS 10 (veya üzeri) üzerinde çalışan uygulamalar, info.plist dosyalarına bir veya daha fazla Gizlilik Anahtarı girerek belirli özelliklere veya kullanıcı bilgilerine erişme amacını statik olarak bildirmelidir ve bu da kullanıcıya uygulamanın neden erişim elde etmek istediği hakkında bilgi verir.

Önemli

Gerekli anahtarları sağlayemeyen uygulamalar, kısıtlı özelliklerden veya kullanıcı bilgilerinden birine erişmeye çalıştıkları zaman sistem tarafından sessizce sonlandırılır, hatasız! iOS 10'da bir uygulama beklenmedik bir şekilde başarısız oluyorsa, tüm gerekli Info.plist öğesinin belirtildiğinden emin olun.

Gizlilikle ilgili aşağıdaki anahtarlar kullanılabilir:

  • Gizlilik - Apple Music kullanım Açıklaması (NSAppleMusicUsageDescription) - Geliştiricinin uygulamanın neden kullanıcının medya kitaplığına erişmek istediğini açıklamasına izin verir.
  • Gizlilik - Bluetooth Çevre Birimi Kullanım Açıklaması (NSBluetoothPeripheralUsageDescription) - Geliştiricinin uygulamanın kullanıcının cihazında Bluetooth'a neden erişmek istediğini açıklamasına izin verir.
  • Gizlilik - Takvim Kullanım Açıklaması (NSCalendarsUsageDescription) - Geliştiricinin uygulamanın neden kullanıcının takvimine erişmek istediğini açıklamasına izin verir.
  • Gizlilik - Kamera Kullanım Açıklaması (NSCameraUsageDescription) - Geliştiricinin uygulamanın neden cihazın kamerasına erişmek istediğini açıklamasını sağlar.
  • Gizlilik - Kişi Kullanım Açıklaması (NSContactsUsageDescription) - Geliştiricinin uygulamanın neden kullanıcının kişilerine erişmek istediğini açıklamasına izin verir.
  • Gizlilik - Sistem Durumu Paylaşımı Kullanım Açıklaması (NSHealthShareUsageDescription) - Geliştiricinin uygulamanın neden kullanıcının sistem durumu verilerine erişmek istediğini açıklamasına izin verir. Daha fazla bilgi için bkz. Apple'ın HKHealthStore Sınıf Başvurusu.
  • Gizlilik - Sistem Durumu Güncelleştirmesi Kullanım Açıklaması (NSHealthUpdateUsageDescription) - Geliştiricinin uygulamanın neden kullanıcının sistem durumu verilerini düzenlemek istediğini açıklamasına izin verir. Daha fazla bilgi için bkz. Apple'ın HKHealthStore Sınıf Başvurusu.
  • Gizlilik - HomeKit Kullanım Açıklaması (NSHomeKitUsageDescription) - Geliştiricinin uygulamanın kullanıcının HomeKit Yapılandırma Verilerine neden erişmek istediğini açıklamasına izin verir.
  • Gizlilik - Konum Her Zaman Kullanım Açıklaması (NSLocationAlwaysUsageDescription) - Geliştiricinin uygulamanın neden kullanıcının konumuna her zaman erişim sahibi olmak istediğini açıklamasına olanak tanır.
  • [Kullanım dışı] Gizlilik - Konum Kullanım Açıklaması (NSLocationUsageDescription) - Geliştiricinin uygulamanın neden kullanıcı konumuna erişmek istediğini açıklamasına izin verir. NOT: Bu anahtar iOS 8 'de (ve üzeri) kullanım dışı bırakılmıştır. Bunun yerine veya NSLocationWhenInUseUsageDescription kullanınNSLocationAlwaysUsageDescription.
  • Gizlilik - KullanımdaYken Konum Kullanım Açıklaması (NSLocationWhenInUseUsageDescription) - Geliştiricinin uygulamanın çalışırken kullanıcının konumuna neden erişmek istediğini açıklamasına izin verir.
  • [Kullanım dışı] Gizlilik - Medya Kitaplığı Kullanım Açıklaması - Geliştiricinin uygulamanın neden kullanıcının medya kitaplığına erişmek istediğini açıklamasına olanak tanır. NOT: Bu anahtar iOS 8 'de (ve üzeri) kullanım dışı bırakılmıştır. Bunun yerine NSAppleMusicUsageDescription kullanın.
  • Gizlilik - Mikrofon Kullanım Açıklaması (NSMicrophoneUsageDescription) - Geliştiricinin uygulamanın cihazların mikrofonuna neden erişmek istediğini açıklamasına olanak tanır.
  • Gizlilik - Hareket Kullanımı Açıklaması (NSMotionUsageDescription) - Geliştiricinin uygulamanın neden cihazın ivmeölçerine erişmek istediğini açıklamasını sağlar.
  • Gizlilik - Fotoğraf Kitaplığı Kullanım Açıklaması (NSPhotoLibraryUsageDescription) - Geliştiricinin uygulamanın neden kullanıcının fotoğraf kitaplığına erişmek istediğini açıklamasına izin verir.
  • Gizlilik - Anımsatıcılar Kullanım Açıklaması (NSRemindersUsageDescription) - Geliştiricinin uygulamanın neden kullanıcının anımsatıcılarına erişmek istediğini açıklamasına izin verir.
  • Gizlilik - Siri Kullanım Açıklaması (NSSiriUsageDescription) - Geliştiricinin uygulamanın neden Siri'ye kullanıcı verileri göndermek istediğini açıklamasına izin verir.
  • Gizlilik - Konuşma Tanıma Kullanım Açıklaması (NSSpeechRecognitionUsageDescription) - Geliştiricinin uygulamanın apple'ın konuşma tanıma sunucularına neden kullanıcı verileri göndermek istediğini açıklamasını sağlar.
  • Gizlilik - TV Sağlayıcısı Kullanım Açıklaması (NSVideoSubscriberAccountUsageDescription) - Geliştiricinin uygulamanın neden kullanıcının TV sağlayıcısı hesabına erişmek istediğini açıklamasına izin verir.

Info.plist anahtarlarıyla çalışma hakkında daha fazla bilgi için lütfen Apple'ın Bilgi Özellik Listesi Anahtar Başvurusu bölümüne bakın.

Gizlilik Anahtarlarını Ayarlama

iOS 10 (ve üzeri) üzerinde HomeKit'e erişmenin aşağıdaki örneğini alın, geliştiricinin NSHomeKitUsageDescription anahtarı uygulamanın Info.plist dosyasına eklemesi ve uygulamanın neden kullanıcının HomeKit veritabanına erişmek istediğini belirten bir dize sağlaması gerekir. Bu dize, uygulamayı ilk kez çalıştırıldığında kullanıcıya sunulacaktır:

Örnek bir NSHomeKitUsageDescription uyarısı

Visual Studio için Xamarin.iOS şu anda info.plist gizlilik anahtarlarının varsayılan iOS bildirim düzenleyicisinden düzenlenmesini desteklememektedir. Bunun yerine genel PList düzenleyicisini kullanmanız gerekir, bu nedenle aşağıdakileri yapın:

  1. Çözüm Gezgini Info.plist dosyasına sağ tıklayın ve Birlikte aç... seçeneğini belirleyin.

  2. Dosyayı açmak için programlar listesinden Genel PList Düzenleyicisi'ni seçin ve tamam'a tıklayın.

    Genel PList Düzenleyicisi'ni seçin

  3. + Listeye yeni bir girdi eklemek için düzenleyicinin son satırındaki düğmeye tıklayın. Bu, Tür olarak ayarlanmış String ve boş bir değerle "Özel Özellik" olarak adlandırılır.

  4. Özellik adına tıklatır ve açılan menü görüntülenir.

  5. Açılan listeden bir Gizlilik anahtarı seçin (Gizlilik - HomeKit Kullanım Açıklaması gibi):

    Gizlilik anahtarı seçin

  6. Uygulamanın verilen özelliğe veya kullanıcı bilgilerine neden erişmek istediğini öğrenmek için Değer sütununa bir açıklama girin:

    Açıklama girin

  7. Dosyadaki değişiklikleri kaydedin.

Önemli

Yukarıda verilen örnekte Info.plist dosyasında anahtarın NSHomeKitUsageDescriptionayarlanmaması, iOS 10 (veya üzeri) işletim sisteminde çalıştırıldığında hata olmadan uygulamanın sessizce başarısız olmasına (çalışma zamanında sistem tarafından kapatılmasına) neden olur.

Özet

Bu makale, Apple'ın iOS 10'da yaptığı güvenlik ve gizlilik değişikliklerini ve bunların Xamarin.iOS uygulamasını nasıl etkilediğini ele almıştır.