Güvenli depolama
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.
özniteliğini
android:fullBackupContent
AndroidManifest.xml ayarlayın:<application ... android:fullBackupContent="@xml/auto_backup_rules"> </application>
AndroidResource'un derleme eylemiyle Platformlar/Android/Resources/xml dizininde auto_backup_rules.xml adlı yeni bir XML dosyası oluşturun. dışındaki
SecureStorage
tü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.
SecureStorage
Tercihler 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.