Condividi tramite


Archiviazione sicura

Browse sample. Esplorare l'esempio

Questo articolo descrive come usare l'interfaccia dell'interfaccia utente dell'app multipiattaforma .NET (.NET MAUI). ISecureStorage Questa interfaccia consente di archiviare in modo sicuro coppie chiave/valore semplici.

L'implementazione predefinita dell'interfaccia ISecureStorage è disponibile tramite la SecureStorage.Default proprietà . Sia l'interfaccia che SecureStorage la ISecureStorage classe sono contenute nello spazio dei Microsoft.Maui.Storage nomi .

Introduzione

Per accedere alla SecureStorage funzionalità, è necessaria la configurazione specifica della piattaforma seguente:

Il backup automatico per le app è una funzionalità di Android 6.0 (livello API 23) e versioni successive per il backup dei dati delle app dell'utente (preferenze condivise, file nello spazio di archiviazione interno dell'app e altri file specifici). I dati vengono ripristinati quando un'app viene reinstallata o installata in un nuovo dispositivo. Ciò può influire su SecureStorage, che usa le preferenze di condivisione di cui è stato eseguito il backup e non può essere decrittografato quando si verifica il ripristino. .NET MAUI gestisce automaticamente questo caso rimuovendo la chiave in modo che possa essere reimpostata. In alternativa, è possibile disabilitare il backup automatico.

Abilitare o disabilitare il backup

È possibile scegliere di disabilitare il backup automatico per l'intera applicazione impostando su android:allowBackup false nel file AndroidManifest.xml . Questo approccio è consigliato solo se si prevede di ripristinare i dati in altro modo.

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

Backup selettivo

Il backup automatico può essere configurato per disabilitare contenuto specifico dal backup. È possibile creare un set di regole personalizzate per escludere gli elementi SecureStore dal backup.

  1. Impostare l'attributo android:fullBackupContent nel file AndroidManifest.xml:

    <application ...
        android:fullBackupContent="@xml/auto_backup_rules">
    </application>
    
  2. Creare un nuovo file XML denominato auto_backup_rules.xml nella directory Platforms/Android/Resources/xml con l'azione di compilazione di AndroidResource. Impostare il contenuto seguente che include tutte le preferenze condivise, ad eccezione di 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>
    

Usare l'archiviazione sicura

Gli esempi di codice seguenti illustrano come usare l'archiviazione sicura.

Suggerimento

È possibile che venga generata un'eccezione quando si chiama GetAsync o SetAsync. Ciò può essere causato da un dispositivo che non supporta l'archiviazione sicura, la modifica delle chiavi di crittografia o il danneggiamento dei dati. è consigliabile gestirlo rimuovendo e aggiungendo nuovamente l'impostazione, se possibile.

Scrivere un valore

Per salvare un valore per una determinata chiave nell'archiviazione sicura:

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

Leggere un valore

Per recuperare un valore dall'archiviazione sicura:

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

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

Suggerimento

Se non esiste un valore associato alla chiave, GetAsync restituisce null.

Rimuovere un valore

Per rimuovere un valore specifico, rimuovere la chiave:

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

Per rimuovere tutti i valori, usare il RemoveAll metodo :

SecureStorage.Default.RemoveAll();

Differenze tra le piattaforme

Questa sezione descrive le differenze specifiche della piattaforma con l'API di archiviazione sicura.

SecureStorage usa l'API Preferenze e segue la stessa persistenza dei dati descritta nella documentazione preferenze , con un nome file [ YOUR-APP-PACKAGE-ID].microsoft.maui.essentials.preferences. Tuttavia, i dati vengono crittografati con la classe Android EncryptedSharedPreferences , dalla libreria Di sicurezza Android, che esegue il wrapping della SharedPreferences classe e crittografa automaticamente chiavi e valori usando un approccio a due schemi:

  • Le chiavi vengono crittografate in modo deterministico, in modo che la chiave possa essere crittografata e cercata correttamente.
  • I valori non sono crittografati in modo deterministico tramite AES-256 GCM.

Per altre informazioni sulla libreria di sicurezza Di Android, vedere Usare i dati in modo più sicuro in developer.android.com.

Limiti

Le prestazioni possono essere influenzate se si archivia una grande quantità di testo, perché l'API è stata progettata per archiviare piccole quantità di testo.