2010-08-31 7 views
35

D'abord, un peu de mon arrière-plan. J'ai travaillé sur de grands systèmes Web pendant plus d'une décennie, Android est quelque chose que j'ai regardé pendant les deux derniers mois; Comme vous pouvez l'imaginer, l'écart est assez large :)Quelle est la sécurité des fichiers SQLite et SharedPreferences sur Android?

En regardant la partie Security and Permissions d'Android et Data Storage de la documentation, en parlant directement aux développeurs, en lisant des livres et des tutoriels, il est assez clair comment fonctionne le modèle entier. Cependant, je n'ai pas pu trouver de réponse indiquant si les fichiers SQLite et SharedPreferences sont suffisamment sécurisés pour stocker des informations non cryptées délicates (par exemple, des jetons OAuth). Est-il possible que quelqu'un les attrape de quelque façon que ce soit? Citant la documentation Android:

Toutes les données stockées par une application se verront attribuer un ID utilisateur de cette application, et normalement pas accessible aux autres packages.

Il est le pas normalement accessible partie me donner des cheveux gris supplémentaires :)

Merci, les réponses utiles sont appréciés :)

+0

Je ne connais pas la réponse, mais je ne pense pas que les données sont chiffrées de quelque façon que ce soit. –

+1

Non, ce n'est pas le cas. Le seul mécanisme de protection est à travers les autorisations d'accès au niveau du système de fichiers. En enracinant votre téléphone, cependant, n'importe quelle application peut accéder à ces fichiers XML. Voir aussi: http://www.androiddiscuss.com/1-android-discuss/1671.html –

Répondre

39

Est-il possible que quelqu'un les attrape de quelque façon que ce soit?

Cela dépend de quelqu'un. Comme l'indique M. Burov, les utilisateurs de téléphones enracinés peuvent obtenir ce qu'ils veulent. Les utilisateurs ordinaires et les autres applications ne peuvent pas, par défaut.

Il est la partie normalement accessible me donner des cheveux gris supplémentaires :)

Par défaut, les fichiers sont sécurisés. Vous pouvez les rendre lisibles dans le monde entier ou inscriptibles dans le monde si vous le souhaitez.

Ne serait-il pas possible de décompiler le fichier apk et de trouver la clé de cryptage dans ce cas?

Cela dépend de la personne contre laquelle vous vous battez. Si vous vous opposez à d'autres applications, demandez à l'utilisateur de fournir la clé de chiffrement. Si vous vous défendez contre l'utilisateur, vous êtes vissé, tout comme toutes les implémentations de DRM sont vissées.

+29

+1. 'Juste toutes les implémentations de DRM sont vissées;) –

+1

Il y aura toujours quelqu'un pour essayer de comprendre comment quelque chose est fait, et il n'y a pas de protection à 100% possible. Le cryptage des données devrait empêcher la plupart des tentatives de réussir, espérons-le. Je suppose que nous devons nous contenter de cela pour le moment. –

1

Eh bien, il y a un tas de SharedPreferences applications de l'éditeur sur le marché, donc ils ne sont certainement pas sécurisés. Également sur les appareils enracinés, la base de données peut facilement être retirée, puisque l'utilisateur a un accès complet au système de fichiers du téléphone. Par conséquent, si vous souhaitez que votre application soit totalement sécurisée, cryptez vos données.

+0

Ne serait-il pas possible de décompiler le fichier apk et de trouver la clé de cryptage dans ce cas? –

+8

"Eh bien, il y a un tas d'applications éditeur de SharedPreferences sur le marché, donc elles ne sont définitivement pas sécurisées." - S'il vous plaît en nommer, car une recherche sur le marché n'en propose aucune. – CommonsWare

+0

@David vous pouvez obtenir la clé grâce à une connexion cryptée à partir de certains serveurs Web. Probablement pas la meilleure solution, mais assure un niveau de sécurité plus élevé. –