Share via


Xamarin.Essentials: Güvenli Depolama

Secure Depolama sınıfı basit anahtar/değer çiftlerinin güvenli bir şekilde depolanmasına yardımcı olur.

Kullanmaya başlayın

Bu API'yi kullanmaya başlamak için kitaplığın projelerinizde düzgün yüklendiğinden ve ayarlandığından emin olmak için Xamarin.Essentials kullanmaya başlama kılavuzunu okuyun.

Güvenli Depolama işlevine erişmek için aşağıdaki platforma özgü kurulum gereklidir:

İpucu

Uygulamalar için Otomatik Yedekleme, android 6.0 (API düzeyi 23) ve sonraki sürümlerin kullanıcı uygulama verilerini (paylaşılan tercihler, uygulamanın iç depolamadaki dosyaları ve diğer belirli dosyaları) yedekleyen bir özelliğidir. Bir uygulama yeni bir cihaza yeniden yüklendiğinde veya yüklendiğinde veriler geri yüklenir. Bu, yedeklenen paylaşım tercihlerini kullanan ve geri yükleme gerçekleştiğinde şifresi çözülemez olan paylaşım tercihlerini etkileyebilir SecureStorage . Xamarin.Essentials anahtarı kaldırarak bu durumu otomatik olarak işler, ancak Otomatik Yedekleme'yi devre dışı bırakarak ek bir adım atabilirsiniz.

Yedeklemeyi etkinleştirme veya devre dışı bırakma

Ayarı dosyada AndroidManifest.xml false olarak ayarlayarak otomatik yedeklemeyi android:allowBackup tüm uygulamanız için devre dışı bırakabilirsiniz. Bu yaklaşım yalnızca verileri başka bir yolla geri yüklemeyi planlıyorsanız önerilir.

<manifest ... >
    ...
    <application android:allowBackup="false" ... >
        ...
    </application>
</manifest>

Seçmeli Yedekleme

Otomatik Yedekleme, belirli içeriğin yedeklenmesinden devre dışı bırakılacak şekilde yapılandırılabilir. Öğelerin yedeklenmesini dışlamak SecureStore için özel bir kural kümesi oluşturabilirsiniz.

  1. özniteliğini android:fullBackupContentAndroidManifest.xml ayarlayın:

    <application ...
        android:fullBackupContent="@xml/auto_backup_rules">
    </application>
    
  2. AndroidResource'un derleme eylemiyle Resources/xml dizininde auto_backup_rules.xml adlı yeni bir XML dosyası oluşturun. Ardından, dışındaki SecureStoragetüm paylaşılan tercihleri içeren aşağıdaki içeriği ayarlayın:

    <?xml version="1.0" encoding="utf-8"?>
    <full-backup-content>
        <include domain="sharedpref" path="."/>
        <exclude domain="sharedpref" path="${applicationId}.xamarinessentials.xml"/>
    </full-backup-content>
    

Güvenli Depolama kullanma

Sınıfınızda için Xamarin.Essentials bir başvuru ekleyin:

using Xamarin.Essentials;

Belirli bir anahtarın değerini güvenli depolama alanına kaydetmek için:

try
{
  await SecureStorage.SetAsync("oauth_token", "secret-oauth-token-value");
}
catch (Exception ex)
{
  // Possible that device doesn't support secure storage on device.
}

Güvenli depolama alanından bir değer almak için:

try
{
  var oauthToken = await SecureStorage.GetAsync("oauth_token");
}
catch (Exception ex)
{
  // Possible that device doesn't support secure storage on device.
}

Not

İstenen anahtarla ilişkili değer yoksa, GetAsync döndürür null.

Belirli bir anahtarı kaldırmak için şunu arayın:

SecureStorage.Remove("oauth_token");

Tüm anahtarları kaldırmak için şunu arayın:

SecureStorage.RemoveAll();

İpucu

veya SetAsyncçağrılırken GetAsync bir özel durum oluşur. Bunun nedeni cihazın güvenli depolamayı desteklememesi, şifreleme anahtarlarının değiştirilmesi veya verilerin bozulması olabilir. Mümkünse ayarı kaldırıp geri ekleyerek bunu işlemek en iyisidir.

Platform Uygulama Özellikleri

Android KeyStore, [YOUR-APP-PACKAGE-ID].xamarinessentials dosya adıyla Paylaşılan Tercihler'e kaydedilmeden önce değeri şifrelemek için kullanılan şifreleme anahtarını depolamak için kullanılır. Paylaşılan tercihler dosyasında kullanılan anahtar (şifreleme anahtarı değil, değerin anahtarı), API'lere geçirilen SecureStorage anahtarın MD5 Karmasıdır.

API Düzeyi 23 ve Üzeri

Daha yeni API düzeylerinde, Android KeyStore'ndan bir AES anahtarı alınır ve paylaşılan tercihler dosyasında depolanmadan önce değeri şifrelemek için AES/GCM/NoPadding şifrelemesiyle birlikte kullanılır.

API Düzeyi 22 ve Daha Düşük

Eski API düzeylerinde, Android KeyStore yalnızca bir AES anahtarını şifrelemek için RSA/ECB/PKCS1Padding şifrelemesi ile kullanılan ve henüz oluşturulmamışsa Güvenli Depolama Key anahtarı altındaki paylaşılan tercihler dosyasında depolanan RSA anahtarlarının depolanmasını destekler.

Güvenli Depolama Tercihler API'sini kullanır ve Tercihler belgelerinde açıklanan veri kalıcılığını izler. Bir cihaz API düzeyi 22'den veya daha düşükten API düzeyi 23 ve üzerine yükseltilirse, uygulama kaldırılmadığı veya RemoveAll çağrılmadığı sürece bu şifreleme türü kullanılmaya devam eder.

Sınırlamalar

Bu API, az miktarda metin depolamaya yöneliktir. Büyük miktarda metin depolamak için kullanmaya çalışırsanız performans yavaş olabilir.

API

Channel 9 ve YouTube'da daha fazla Xamarin videosu bulun.