Sécurité Android SharedPreference

Je m’interroge sur la sécurité des préférences partagées.

Est-il possible d’avoir access à des préférences partagées, même si elles ont été créées dans MODE_PRIV (0)?
Est-il possible de répertorier toutes les préférences partagées disponibles et de récupérer tous les parameters des autres applications?
Est-ce que sharedpreferences est un bon endroit pour placer des données sensibles, telles qu’un mot de passe ou un jeton d’authentification?

Merci

    Les préférences partagées sont stockées sous la forme d’un fichier dans le système de fichiers de l’appareil. Ils sont, par défaut, stockés dans le répertoire de données de l’application avec les prémissions du système de fichiers qui permettent uniquement à l’UID avec lequel l’application spécifique s’exécute d’y accéder. Ils sont donc privés dans la mesure où les permissions de fichiers Linux limitent leur access, comme sur tout système Linux / Unix.

    Toute personne ayant un access root au périphérique pourra les voir, car root a access à tout sur le système de fichiers. De plus, toute application qui s’exécute avec le même UID que l’application de création pourra y accéder (cela n’est généralement pas fait et vous devez prendre des mesures spécifiques pour que deux applications s’exécutent avec le même UID, donc ce n’est probablement pas un gros problème). préoccupation). Enfin, si quelqu’un était capable de monter le système de fichiers de votre appareil sans utiliser le système d’exploitation Android installé, il pourrait également contourner les permissions qui restreignent l’access.

    Si vous êtes préoccupé par un tel access à vos préférences (ou par des données écrites par votre application), vous souhaiterez le chiffrer. Si cela vous préoccupe, vous devrez déterminer exactement combien de protection est nécessaire pour le niveau de risque que vous voyez. Il y a une discussion très approfondie à ce sujet dans Application Security pour la plate-forme Android , qui vient de paraître en décembre 2011 (avertissement: je suis l’auteur de ce livre).

    Les SharedPreferences ne sont rien d’autre que des fichiers XML dans vos dossiers / data / data / folder. Ainsi, toute application ou utilisateur avec des privilèges de superutilisateur sur un périphérique enraciné peut accéder à vos SharedPreferences, même si elles ont été créées avec MODE_PRIV

    Il y a quand même un moyen de le protéger de tout le monde … Merci de vérifier ce lien. Ici, vous pouvez stocker des données dans pref avec le chiffrement, la classe est explicite et très facile à utiliser.

    https://github.com/sveinungkb/encrypted-userprefs

    Comme dit par d’autres, tout le monde peut y accéder, mais dans ce cas, personne ne peut lire les données qu’il contient, car elles sont cryptées. Donc, sa sécurité.Pour la sécurité maximale, ma suggestion sera de générer la clé utilisée pour le chiffrement au moment de l’exécution plutôt que de la coder en dur. Il y a plusieurs façons de faire ça 🙂

    Normalement, non, elles ne sont pas accessibles par d’autres applications. Cependant, notez que les SharedPreferences sont stockées sous la forme de fichiers XML dans le répertoire /data/data/ , ce qui signifie que toute application disposant de privilèges de superutilisateur s, même si elles ont été créées avec MODE_PRIV