Sdílet prostřednictvím


Zabezpečené úložiště

Projděte si ukázku. Procházení ukázky

Tento článek popisuje, jak můžete použít rozhraní .NET Multi-Platform App UI (.NET MAUI). ISecureStorage Toto rozhraní pomáhá bezpečně ukládat jednoduché páry klíč/hodnota.

Výchozí implementace ISecureStorage rozhraní je k dispozici prostřednictvím SecureStorage.Default vlastnosti. Rozhraní ISecureStorage i SecureStorage třída jsou obsaženy v Microsoft.Maui.Storage oboru názvů.

Začínáme

Pro přístup k funkcím SecureStorage se vyžaduje následující nastavení specifické pro platformu:

Automatické zálohování pro aplikace je funkce Androidu 6.0 (rozhraní API úrovně 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 přeinstaluje nebo nainstaluje na nové zařízení. To může mít vliv SecureStoragena to, že využívá předvolby sdílení, které se zálohují, a když dojde k obnovení, nejde dešifrovat. .NET MAUI tento případ automaticky zpracuje odebráním klíče, aby se mohl resetovat. Případně můžete automatické zálohování zakázat.

Povolení nebo zakázání zálohování

Automatické zálohování pro celou aplikaci můžete zakázat nastavením android:allowBackup hodnoty false v souboru AndroidManifest.xml . 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í je možné nakonfigurovat tak, aby zakázalo zálohování konkrétního obsahu. Můžete vytvořit vlastní sadu pravidel pro vyloučení SecureStore položek z zálohování.

  1. android:fullBackupContent Nastavte atribut v AndroidManifest.xml:

    <application ...
        android:fullBackupContent="@xml/auto_backup_rules">
    </application>
    
  2. Vytvořte nový soubor XML s názvem auto_backup_rules.xml v adresáři Platforms/Android/Resources/xml s akcí sestavení AndroidResource. Nastavte následující obsah, který obsahuje 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}.microsoft.maui.essentials.preferences.xml"/>
    </full-backup-content>
    

Použití zabezpečeného úložiště

Následující příklady kódu ukazují, jak používat zabezpečené úložiště.

Tip

Je možné, že při volání GetAsync nebo SetAsync. Příčinou může být to, že zařízení nepodporuje zabezpečené úložiště, změny šifrovacích klíčů nebo poškození dat. Nejlepší je to zvládnout odebráním a přidáním nastavení zpět, pokud je to možné.

Zápis hodnoty

Uložení hodnoty pro daný klíč v zabezpečeném úložišti:

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

Čtení hodnoty

Načtení hodnoty ze zabezpečeného úložiště:

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

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

Tip

Pokud není k klíči přidružená hodnota, GetAsync vrátí hodnotu null.

Odebrání hodnoty

Pokud chcete odebrat konkrétní hodnotu, odeberte klíč:

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

Pokud chcete odebrat všechny hodnoty, použijte metodu RemoveAll :

SecureStorage.Default.RemoveAll();

Rozdíly mezi platformami

Tato část popisuje rozdíly specifické pro platformu s rozhraním API zabezpečeného úložiště.

SecureStoragepoužívá rozhraní API předvoleb a sleduje stejnou trvalost dat popsanou v dokumentaci Předvolby s názvem [YOUR-APP-PACKAGE-ID].microsoft.maui.essentials.preferences. Data se ale šifrují pomocí třídy Android EncryptedSharedPreferences z knihovny zabezpečení Androidu, která zabalí třídu a automaticky šifruje klíče a hodnoty pomocí přístupu se dvěma schématy SharedPreferences :

  • Klíče jsou deterministicky zašifrované, aby bylo možné klíč zašifrovat a správně vyhledat.
  • Hodnoty nejsou deterministicky šifrované pomocí AES-256 GCM.

Další informace o knihovně zabezpečení Androidu najdete v tématu Bezpečnější práce s daty na developer.android.com.

Omezení

Pokud ukládáte velké množství textu, může to mít vliv na výkon, protože rozhraní API bylo navržené tak, aby ukládalo malé množství textu.