Android SharedPreference sécurité

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

Est-il possible d'accéder à sharedpreferences, même si elles ont été créées dans MODE_PRIV (0) ?
Est-il possible de lister tous les sharedpreferences disponibles, puis de récupérer tous les paramètres d'autres applications?
Sharedpreferences est-il un bon endroit pour mettre des données sensibles, telles que le mot de passe ou le jeton d'authentification?

Merci

90
demandé sur Marek Sebera 2012-02-12 01:44:04

3 réponses

Les préférences partagées sont stockées sous forme de fichier dans le système de fichiers du périphérique. Ils sont, par défaut, stockés dans le répertoire de données de l'application avec des prémissions de système de fichiers définies qui permettent uniquement à L'UID avec lequel l'application spécifique s'exécute d'y accéder. Donc, ils sont privés dans la mesure où les autorisations de fichiers Linux restreignent l'accès à eux, comme sur N'importe quel système Linux/Unix.

Toute personne ayant un accès au niveau racine à l'appareil pourra les voir, car root a accès à tout sur le système de fichiers. En outre, toute application qui fonctionne avec le même UID que l'application de création serait en mesure d'y accéder (ce n'est généralement pas fait et vous devez prendre des mesures spécifiques pour faire fonctionner deux applications avec le même UID, donc ce n'est probablement pas une grande 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 autorisations qui restreignent l'accès.

Si vous êtes préoccupé par un tel accès à vos préférences (ou données écrites par votre application), alors vous voudrez le crypter. Si vous êtes préoccupé par eux, vous allez avoir besoin de comprendre 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, vient de paraître en décembre 2011 (avertissement: je suis l'auteur de ce livre).

196
répondu 2012-02-11 22:34:26

SharedPreferences ne sont que des fichiers XML dans votre dossier phones / data / data/, de sorte que 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

Encore , il existe un moyen de le protéger de tout le monde... Veuillez checkout ce lien. Ici, vous pouvez stocker des données en pref avec cryptage, la classe est explicite et très facile à utiliser.

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

Comme dit par d'autres n'importe qui peut y accéder mais dans ce cas personne ne peut lire les données à l'intérieur car elles sont cryptées. De manière sécurisée.Pour la sécuritéla plus grande , 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 le faire:)

20
répondu Jazz Haque 2015-07-24 11:06:14

Normalement, non, ils ne peuvent pas être accessibles par d'autres applications, cependant, vous devez noter que SharedPreferences sont stockés sous forme de fichiers XML dans le répertoire /data/data/, ce qui signifie essentiellement que toute application avec privilèges de superutilisateur sur un périphérique {[4] enraciné Peut accéder à vos SharedPreferences, même si elles ont été créées avec MODE_PRIV

10
répondu aviraldg 2015-09-17 11:14:56