Aracılığıyla paylaş


Güvenli depolama

Örneğe göz atın. Örneğe göz atın

Bu makalede .NET Çok Platformlu Uygulama Kullanıcı Arabirimi (.NET MAUI) ISecureStorage arabirimini nasıl kullanabileceğiniz açıklanmaktadır. Bu arabirim, basit anahtar/değer çiftlerinin güvenli bir şekilde depolanmasına yardımcı olur.

Arabirimin ISecureStorage varsayılan uygulaması özelliği aracılığıyla SecureStorage.Default kullanılabilir. ISecureStorage Hem arabirim hem SecureStorage de sınıf ad alanında Microsoft.Maui.Storage yer alır.

Kullanmaya başlayın

İşlevlere SecureStorage erişmek için aşağıdaki platforma özgü kurulum gereklidir:

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 yeniden yüklendiğinde veya yeni bir cihaza 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 öğesini etkileyebilir SecureStorage. .NET MAUI, sıfırlanması için anahtarı kaldırarak bu durumu otomatik olarak işler. Alternatif olarak, Otomatik Yedekleme'yi devre dışı bırakabilirsiniz.

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

AndroidManifest.xml dosyasında false olarak ayarlayarak android:allowBackup otomatik yedeklemeyi 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:fullBackupContent AndroidManifest.xml ayarlayın:

    <application ...
        android:fullBackupContent="@xml/auto_backup_rules">
    </application>
    
  2. AndroidResource'un derleme eylemiyle Platformlar/Android/Resources/xml dizininde auto_backup_rules.xml adlı yeni bir XML dosyası oluşturun. 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}.microsoft.maui.essentials.preferences.xml"/>
    </full-backup-content>
    

Güvenli depolamayı kullanma

Aşağıdaki kod örnekleri, güvenli depolamanın nasıl kullanılacağını gösterir.

İ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.

Değer yazma

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

await SecureStorage.Default.SetAsync("oauth_token", "secret-oauth-token-value");

Değer okuma

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

string oauthToken = await SecureStorage.Default.GetAsync("oauth_token");

if (oauthToken == null)
{
    // No value is associated with the key "oauth_token"
}

İpucu

Anahtarla ilişkilendirilmiş bir değer yoksa döndürür GetAsync null.

Değeri kaldırma

Belirli bir değeri kaldırmak için anahtarı kaldırın:

bool success = SecureStorage.Default.Remove("oauth_token");

Tüm değerleri kaldırmak için yöntemini RemoveAll kullanın:

SecureStorage.Default.RemoveAll();

Platform farklılıkları

Bu bölümde, güvenli depolama API'siyle platforma özgü farklılıklar açıklanmaktadır.

SecureStorageTercihler API'sini kullanır ve [YOUR-APP-PACKAGE-ID].microsoft.maui.essentials.preferences dosya adıyla Tercihler belgelerinde açıklanan veri kalıcılığını izler. Ancak veriler, android sınıfını sarmalayan SharedPreferences ve anahtarları ve değerleri iki şemalı bir yaklaşım kullanarak otomatik olarak şifreleyen Android Güvenlik kitaplığından Android EncryptedSharedPreferences sınıfıyla şifrelenir:

  • Anahtarlar belirlendik olarak şifrelenir, böylece anahtar şifrelenebilir ve düzgün bir şekilde aranabilir.
  • Değerler, AES-256 GCM kullanılarak belirlenemeyen şekilde şifrelenir.

Android Güvenliği kitaplığı hakkında daha fazla bilgi için bkz . developer.android.com üzerinde verilerle daha güvenli çalışma .

Sınırlamalar

API az miktarda metin depolamak için tasarlandığından, büyük miktarda metin depolarsanız performans etkilenebilir.