Partager via


Sécuriser le stockage

Parcourez l’exemple. Parcourir l'exemple

Dans cet article, vous allez apprendre à utiliser l’interface ISecureStorage de l’application multiplateforme .NET (.NET MAUI). Cette interface permet de stocker en toute sécurité des paires clé-valeur simples.

L’implémentation par défaut de l’interface ISecureStorage est disponible via la propriété SecureStorage.Default. L’espace de noms Microsoft.Maui.Storage contient à la fois l’interface ISecureStorage et la classe SecureStorage.

Démarrage

Pour accéder à la fonctionnalité SecureStorage, la configuration suivante spécifique à la plateforme est requise.

La sauvegarde automatique pour les applications est une fonctionnalité d’Android 6.0 (niveau d’API 23) et des versions ultérieures qui sauvegarde les données d’application de l’utilisateur (préférences partagées, fichiers situés dans le stockage interne de l’application et autres fichiers spécifiques). Les données sont restaurées lorsqu’une application est réinstallée ou installée sur un nouvel appareil. Ceci peut avoir une incidence sur SecureStorage, qui utilise les préférences de partage sauvegardées et non déchiffrables lors de la restauration. .NET MAUI gère automatiquement ce cas en supprimant la clé afin qu’elle puisse être réinitialisée. Vous pouvez également désactiver la sauvegarde automatique.

Activer ou désactiver la sauvegarde

Vous pouvez choisir de désactiver la sauvegarde automatique pour la totalité de votre application en définissant le paramètre android:allowBackup sur false dans le fichier AndroidManifest.xml. Cette approche n’est recommandée que si vous envisagez de restaurer les données d’une autre façon.

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

Sauvegarde sélective

Il est possible de configurer la sauvegarde automatique de façon à ce que la sauvegarde de certains contenus soit désactivée. Vous pouvez créer un ensemble de règles personnalisées pour exclure les éléments SecureStore de la sauvegarde.

  1. Définissez l’attribut android:fullBackupContent dans AndroidManifest.xml :

    <application ...
        android:fullBackupContent="@xml/auto_backup_rules">
    </application>
    
  2. Créez un fichier XML nommé auto_backup_rules.xml dans le répertoire Platforms/Android/Resources/xml à l’aide de l’action de génération d’AndroidResource. Définissez le contenu suivant, qui comporte toutes les préférences partagées à l’exception de 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>
    

Utiliser un stockage sécurisé

Les exemples de code suivants illustrent comment utiliser un stockage sécurisé.

Conseil

Il est possible qu’une exception soit levée lors de l’appel à GetAsync ou SetAsync. Cela peut être dû à un appareil qui ne prend pas en charge le stockage sécurisé, la modification des clés de chiffrement ou l’altération des données. Il est préférable de gérer cela en supprimant et en rétablissant le paramètre si possible.

Écrire une valeur

Pour enregistrer une valeur de clé donnée dans SecureStorage :

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

Lire une valeur

Pour récupérer une valeur de SecureStorage :

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

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

Conseil

S’il n’existe pas de valeur associée à la clé, GetAsync retourne null.

Supprimer une valeur

Pour supprimer une valeur spécifique, supprimez la clé :

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

Pour supprimer toutes les clés, utilisez la méthode RemoveAll :

SecureStorage.Default.RemoveAll();

Différences selon les plateformes

Cette section décrit les différences propres à la plateforme concernant l’API de stockage sécurisé.

SecureStorage utilise l’API Préférences et suit la même persistance des données décrite dans la documentation Préférences, avec un nom de fichier [YOUR-APP-PACKAGE-ID].microsoft.maui.essentials.preferences. Toutefois, les données sont chiffrées avec la classe Android EncryptedSharedPreferences, à partir de la bibliothèque de sécurité Android, qui encapsule la classe SharedPreferences et chiffre automatiquement les clés et les valeurs à l’aide d’une approche à deux schémas :

  • Les clés sont chiffrées de manière déterministe, afin que la clé puisse être chiffrée et correctement recherchée.
  • Les valeurs ne sont pas chiffrées de manière déterministe à l’aide d’AES-256 GCM.

Pour plus d’informations sur la bibliothèque de sécurité Android, consultez Utiliser les données de manière plus sécurisée sur developer.android.com.

Limites

Les performances peuvent être affectées si vous stockez du texte en grande quantité, car l’API a été conçue pour stocker de petites quantités de texte.