Xamarin.Essentials: Zabezpečení Storage
Třída SecureStorage pomáhá bezpečně ukládat jednoduché páry klíč-hodnota.
Začínáme
Pokud chcete začít používat toto rozhraní API, přečtěte si příručku Začínáme pro a ujistěte se, že je knihovna správně nainstalovaná a nastavená ve vašich projektech.
Pro přístup k funkci SecureStorage se vyžaduje následující nastavení specifické pro platformu:
Tip
Automatické zálohování aplikací je funkce Androidu 6.0 (úroveň rozhraní API 23) a novější, která zálohuje data aplikací uživatele (sdílené předvolby, soubory v interním úložišti aplikace a další konkrétní soubory). Data se obnoví, když se aplikace znovu nainstaluje nebo nainstaluje na nové zařízení. To může mít vliv na to, které využívá předvolby sdílené složky, které jsou zálohované a nelze je SecureStorage dešifrovat, když dojde k obnovení. Xamarin.Essentials tento případ automaticky zpracuje odebráním klíče, aby bylo možné ho resetovat, ale můžete udělat další krok zakázáním automatického zálohování.
Povolení nebo zakázání zálohování
Automatické zálohování pro celou aplikaci můžete zakázat nastavením nastavení android:allowBackup na hodnotu false v AndroidManifest.xml souboru. Tento přístup se doporučuje pouze v případě, že plánujete obnovení dat jiným způsobem.
<manifest ... >
...
<application android:allowBackup="false" ... >
...
</application>
</manifest>
Selektivní zálohování
Automatické zálohování se může nakonfigurovat tak, aby zakažte zálohování konkrétního obsahu. Můžete vytvořit vlastní sadu pravidel, která vyloučí SecureStore zálohované položky.
Nastavte
android:fullBackupContentatribut vandroid:fullBackupContent:<application ... android:fullBackupContent="@xml/auto_backup_rules"> </application>Vytvořte nový soubor XML s názvemauto_backup_rules.xml v adresáři Resources/xml pomocí akce sestavení AndroidResource. Potom nastavte následující obsah, který zahrnuje všechny sdílené předvolby s výjimkou
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>
Použití zabezpečeného Storage
Do třídy Xamarin.Essentials přidejte odkaz na :
using Xamarin.Essentials;
Uložení hodnoty pro daný klíč v zabezpečeném úložišti:
try
{
await SecureStorage.SetAsync("oauth_token", "secret-oauth-token-value");
}
catch (Exception ex)
{
// Possible that device doesn't support secure storage on device.
}
Načtení hodnoty ze zabezpečeného úložiště:
try
{
var oauthToken = await SecureStorage.GetAsync("oauth_token");
}
catch (Exception ex)
{
// Possible that device doesn't support secure storage on device.
}
Poznámka
Pokud k požadovanému klíči není přidružená žádná hodnota, GetAsync vrátí null .
Pokud chcete konkrétní klíč odebrat, zavolejte:
SecureStorage.Remove("oauth_token");
Pokud chcete odebrat všechny klíče, zavolejte:
SecureStorage.RemoveAll();
Tip
Je možné, že je vyvolána výjimka při volání GetAsync nebo SetAsync . Příčinou může být to, že zařízení není podporováno zabezpečené úložiště, změna šifrovacích klíčů nebo poškození dat. Pokud je to možné, je nejlepší to odstraňovat odebráním a přidáním nastavení zpět.
Specifika implementace platformy
Úložiště klíčů Androidu slouží k uložení šifrovacího klíče používaného k zašifrování hodnoty před uložením do sdílených předvoleb s názvem souboru [YOUR-APP-PACKAGE-ID].xamarinessentials. Klíč (ne kryptografický klíč, klíč k hodnotě )použitý v souboru sdílených předvoleb je hodnota hash MD5 klíče předanou rozhraním API.
Rozhraní API úrovně 23 a vyšší
Na novějších úrovních rozhraní API se klíč AES získá z úložiště klíčů Androidu a použije se s šifrou AES/GCM/NoPadding k zašifrování hodnoty předtím, než se uloží do souboru sdílených předvoleb.
Rozhraní API úrovně 22 a nižší
Na starších úrovních rozhraní API úložiště klíčů Android podporuje ukládání klíčů RSA, které se používají s šifrováním RSA/PKCS1Padding k šifrování klíče AES (náhodně generovaného za běhu) a které se ukládají do souboru sdílených předvoleb v klíči SecureStorageKey, pokud ještě nebyl vygenerován.
SecureStorage používá rozhraní API pro předvolby a používá stejné uchování dat, které je uvedeno v dokumentaci Předvolby. Pokud zařízení upgraduje z úrovně 22 nebo nižší na úroveň rozhraní API 23 a vyšší, bude tento typ šifrování dál používán, pokud není aplikace odinstalována nebo není volána funkce RemoveAll.
Omezení
Toto rozhraní API slouží k ukládání malého množství textu. Pokud se ho pokusíte použít k ukládání velkých objemů textu, může být nízký výkon.
rozhraní API
- Xamarin.Essentials /SecureStorage" data-linktype="external">SecureStorage
- Dokumentace k rozhraní SecureStorage API
Související video
Další videa o Xamarinu najdete na Channel 9 a YouTube.