Xamarin.Essentials: güvenli Depolama
SecureStorage sınıfı basit anahtar/değer çiftlerini güvenli bir şekilde depolamaya yardımcı olur.
başlarken
Bu API 'yi kullanmaya başlamak için, kitaplığın projelerinizde düzgün bir şekilde yüklendiğinden ve ayarlandığından emin olmak için Başlarken Kılavuzunu okuyun.
SecureStorage işlevselliğine erişmek için platforma özgü aşağıdaki kurulum gereklidir:
İpucu
Uygulamalar Için otomatik yedekleme , Android 6,0 (API düzeyi 23) ve sonrasında kullanıcının uygulama verilerini (paylaşılan Tercihler, uygulamanın iç depolama alanındaki dosyalar ve diğer belirli dosyalar) yedekleyen bir özelliktir. Bir uygulama yeniden yüklendiğinde veya yeni bir cihaza yüklendiğinde veriler geri yüklenir. Bu, SecureStorage yedeklenen ve geri yükleme gerçekleştiğinde şifresi çözülebilecek olan paylaşma tercihlerini kullanan etkileyebilir. Xamarin.Essentials , sıfırlanabilmesi için anahtarı kaldırarak bu durumu otomatik olarak işler, ancak Otomatik yedeklemeyi devre dışı bırakarak ek bir adım gerçekleştirebilirsiniz.
Yedeklemeyi etkinleştirme veya devre dışı bırakma
android:allowBackupAyarını dosyada false olarak ayarlayarak, tüm uygulamanız Için Otomatik yedeklemeyi devre dışı bırakmayı seçebilirsiniz AndroidManifest.xml . Bu yaklaşım yalnızca, verileri başka bir şekilde geri yüklemeyi planlıyorsanız önerilir.
<manifest ... >
...
<application android:allowBackup="false" ... >
...
</application>
</manifest>
Seçmeli yedekleme
Otomatik yedekleme, belirli içeriğin yedeklenmesini devre dışı bırakacak şekilde yapılandırılabilir. Öğelerin yedeklenmesini hariç tutmak için özel bir kural kümesi oluşturabilirsiniz SecureStore .
android:fullBackupContentandroid:fullBackupContentözniteliğini ayarlayın:<application ... android:fullBackupContent="@xml/auto_backup_rules"> </application>Resources/XML dizininde auto_backup_rules.xml adlı yeni bir XML dosyası oluşturun, AndroidResourceoluşturma eylemi. Ardından, aşağıdakiler hariç tüm paylaşılan tercihleri içeren aşağıdaki içeriği ayarlayın
SecureStorage:<?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ıza bir başvuru ekleyin Xamarin.Essentials :
using Xamarin.Essentials;
Güvenli depolamada verilen bir anahtarın değerini 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 bir değer yoksa, döndürülür GetAsyncnull .
Belirli bir anahtarı kaldırmak için şunu çağırın:
SecureStorage.Remove("oauth_token");
Tüm anahtarları kaldırmak için şunu çağırın:
SecureStorage.RemoveAll();
İpucu
Veya çağrılırken bir özel durum oluşturulur GetAsyncSetAsync . Bu, bir cihazın güvenli depolama, şifreleme anahtarları veya veri bozulması desteklememesine neden olabilir. Bunu kaldırmak ve mümkünse ayarı geri eklemek en iyisidir.
Platform uygulama özellikleri
Android KeyStore , bir paylaşılan tercihlerinize kaydedilmeden önce değeri şifrelemek için kullanılan ŞIFRELEME anahtarını [-App-Package-ID]. xamarinessentialsadlı bir dosya adı ile depolamak için kullanılır. Paylaşılan Tercihler dosyasında kullanılan anahtar (şifreleme anahtarı değil, değereolan anahtar ), API 'Lere geçirilen anahtarın MD5 karmasıdır .
API düzeyi 23 ve üzeri
Daha yeni API düzeylerinde, bir AES anahtarı Android keystore 'dan alınır ve değeri paylaşılan Tercihler dosyasında depolanmadan önce şifrelemek için AES/GCM/NoPadding şifresi ile kullanılır.
API düzeyi 22 ve daha düşük
Daha eski API düzeylerinde, Android KeyStore yalnızca bir AES anahtarını şifrelemek Için bir RSA/ECB/PKCS1Padding şifresi ile kullanılan RSA anahtarlarını depolamayı destekler (çalışma zamanında rastgele oluşturulur) ve bir tane oluşturulmadıysanız anahtar SecureStorageKeyaltındaki paylaşılan Tercihler dosyasında depolanır.
SecureStorage , Tercihler API 'sini kullanır ve Tercihler belgelerinde özetlenen aynı veri kalıcılığını izler. Bir cihaz, API düzeyi 22 veya daha düşük bir API düzeyi 23 ve üzeri bir sürüme yükseltilebiliyor ise, uygulama kaldırılana veya RemoveAll çağrılmadığı takdirde bu şifreleme türü kullanılacaktır.
Sınırlamalar
Bu API, küçük miktarlarda metin depolamaya yöneliktir. Büyük miktarlarda metin depolamak için kullanmayı denerseniz performans yavaş olabilir.
API
- Xamarin. Essentials /SecureStorage "Data-LinkType =" external ">SecureStorage kaynak kodu
- SecureStorage API belgeleri