Schützen von Speicher
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.
Legen Sie das
android:fullBackupContent
-Attribut in Ihrer AndroidManifest.xml fest:<application ... android:fullBackupContent="@xml/auto_backup_rules"> </application>
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.