Freigeben über


Schützen von Speicher

Beispiel durchsuchen.Durchsuchen Sie das Beispiel

In diesem Artikel wird beschrieben, wie Sie die .NET Multi-Platform App UI (.NET MAUI) ISecureStorage-Schnittstelle verwenden können. Diese Schnittstelle ermöglicht die sichere Speicherung einfacher Schlüssel-/Wert-Paare.

Die Standardimplementierung der ISecureStorage-Schnittstelle ist über die SecureStorage.Default-Eigenschaft verfügbar. Sowohl die ISecureStorage-Schnittstelle als auch die SecureStorage-Klasse sind im Microsoft.Maui.Storage-Namespace enthalten.

Erste Schritte

Um auf die SecureStorage-Funktionalität zuzugreifen, ist die folgende plattformspezifische Einrichtung erforderlich:

Die Automatische Sicherung für Apps ist eine Funktion von Android 6.0 (API-Ebene 23) und höher, die die App-Daten von Benutzer*innen sichert (freigegebene Einstellungen, Dateien im internen App-Speicher und andere spezifische Dateien). Die Daten werden wiederhergestellt, wenn eine App neu installiert oder auf einem neuen Gerät installiert wird. Dies kann SecureStorage betreffen, das Freigabeeinstellungen verwendet, die gesichert werden und bei der Wiederherstellung nicht entschlüsselt werden können. NET MAUI behandelt diesen Fall automatisch, indem es den Schlüssel entfernt, damit er zurückgesetzt werden kann. Alternativ können Sie die automatische Sicherung deaktivieren.

Aktivieren und Deaktivieren der Sicherung

Sie können die automatische Sicherung für Ihre gesamte Anwendung deaktivieren, indem Sie android:allowBackup in der Datei AndroidManifest.xml auf false setzen. Dieser Ansatz wird nur empfohlen, wenn Sie Daten auf eine andere Weise wiederherstellen möchten.

<manifest ... >
    ...
    <application android:allowBackup="false" ... >
        ...
    </application>
</manifest>

Selektive Sicherung

Die automatische Sicherung lässt sich konfigurieren, um bestimmte Inhalte davon auszuschließen. Sie können ein benutzerdefiniertes Regelset erstellen, um SecureStore-Elemente von der Sicherung auszuschließen.

  1. Legen Sie das android:fullBackupContent-Attribut in Ihrer AndroidManifest.xml fest:

    <application ...
        android:fullBackupContent="@xml/auto_backup_rules">
    </application>
    
  2. Erstellen Sie eine neue XML-Datei namens auto_backup_rules.xml im Verzeichnis Platforms/Android/Resources/xml mit der Build-Aktion AndroidResource. Legen Sie den folgenden Inhalt fest, der alle gemeinsamen Einstellungen außer SecureStorage enthält:

    <?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>
    

Verwenden des sicheren Speichers

Die folgenden Code-Beispiele zeigen, wie die sichere Speicherung verwendet werden kann

Tipp

Es ist möglich, dass beim Aufruf von GetAsync oder SetAsync eine Ausnahme ausgelöst wird. Dies kann darauf zurückzuführen sein, dass ein Gerät keinen sicheren Speicher unterstützt, dass Verschlüsselungsschlüssel geändert wurden oder dass Daten beschädigt sind. Am besten ist es, die Einstellung zu entfernen und nach Möglichkeit wieder hinzuzufügen.

Schreibt einen Wert.

So speichern Sie einen Wert für einen bestimmten Schlüssel im sicheren Speicher:

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

Lesen von Werten

So rufen Sie einen Wert aus dem sicheren Speicher ab:

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

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

Tipp

Wenn dem Schlüssel kein Wert zugeordnet ist, gibt GetAsync null zurück.

Entfernen eines Werts

Um einen bestimmten Wert zu entfernen, entfernen Sie den Schlüssel:

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

Um alle Werte zu entfernen, verwenden Sie die RemoveAll Methode:

SecureStorage.Default.RemoveAll();

Plattformunterschiede

In diesem Abschnitt werden die plattformspezifischen Unterschiede mit der sicheren Speicher-API beschrieben.

SecureStorage verwendet die Präferenzen-API und folgt der gleichen Datenpersistenz, die in der Präferenzen-Dokumentation beschrieben ist, mit dem Dateinamen [IHR-APP-PAKET-ID].microsoft.maui.essentials.preferences. Die Daten werden jedoch mit der Android-Klasse EncryptedSharedPreferences aus der Android-Sicherheitsbibliothek verschlüsselt, die die Klasse SharedPreferences umschließt und die Schlüssel und Werte automatisch mit einem Zwei-Schema-Ansatz verschlüsselt:

  • Die Schlüssel werden deterministisch verschlüsselt, sodass der Schlüssel verschlüsselt und korrekt nachgeschlagen werden kann.
  • Die Werte werden mit AES-256 GCM nicht-deterministisch verschlüsselt.

Weitere Informationen über die Android-Sicherheitsbibliothek finden Sie unter Sicherer mit Daten arbeiten unter developer.android.com.

Begrenzungen

Die Leistung kann beeinträchtigt werden, wenn Sie große Textmengen speichern, da die API so konzipiert wurde, dass kleine Textmengen gespeichert werden.