288 votes

Qu'est-ce que "Android:allowBackup" ?

Depuis le nouvelle version preview d'ADT (version 21) Dans le cas de la version 1.0, il y a un nouvel avertissement de lint qui m'indique la prochaine chose à faire dans le fichier de manifeste (dans la balise d'application) :

Devrait explicitement définir Android:allowBackup à true ou false (c'est true par défaut, et cela peut avoir des implications de sécurité pour les données de l'application).

Dans le site officiel ils ont écrit :

Deux nouvelles vérifications : vous devez décider explicitement si votre application autorise les sauvegardes, et une vérification des étiquettes. Il y a un nouvel indicateur de ligne de commande pour définir le chemin de la bibliothèque. De nombreuses améliorations à l'analyse incrémentale de lint pendant l'édition.

Quel est cet avertissement ? Qu'est-ce que la fonction de sauvegarde et comment l'utiliser ?

De plus, pourquoi l'avertissement me dit que cela a des implications en matière de sécurité ? Quels sont les inconvénients et les avantages de la désactivation de cette fonction ?


Edit : il y a 2 concepts de sauvegarde pour le manifeste :

  • "Android" : allowBackup "permet de sauvegarder et de restaurer via adb, comme indiqué dans le tableau suivant ici :

Autoriser ou non l'application à participer à la sauvegarde et à l'archivage des données. restauration. Si cet attribut a la valeur false, aucune sauvegarde ou ou la restauration de l'application ne sera jamais effectuée, même par une sauvegarde complète du système qui, autrement, entraînerait la sauvegarde de toutes les données de l'application. données de l'application via adb. La valeur par défaut de cet attribut est true.

ceci est considéré comme un problème de sécurité car des personnes pourraient sauvegarder votre application via adb et ensuite obtenir des données privées de votre application sur leur PC.

cependant, je pense que ce n'est pas un problème, puisque la plupart des utilisateurs ne savent pas ce qu'est adb, et s'ils le savent, ils sauront aussi comment Root le dispositif. les fonctions adb ne fonctionneraient que si le dispositif a la fonction de débogage activée, et cela nécessite que l'utilisateur l'active.

Ainsi, seuls les utilisateurs qui connectent leurs appareils au PC et activent la fonction de débogage sont concernés. S'ils ont une application malveillante sur leur PC qui utilise les outils ADB, cela peut poser problème car l'application peut lire les données de stockage privées.

je pense que google devrait juste ajouter une fonction qui est désactivée par défaut, dans la catégorie développeur, pour permettre la sauvegarde et la restauration des applications via adb.

  • "Android" : agent de sauvegarde "permet d'utiliser la fonction de sauvegarde et de restauration du nuage, comme le montre l'illustration suivante ici et ici :

Le nom de la classe qui implémente l'agent de sauvegarde de l'application, une sous-classe de BackupAgent. La valeur de l'attribut doit être un nom de classe nom de classe complet (par exemple, "com.example.project.MyBackupAgent"). Cependant, en guise de raccourci, si le premier caractère du nom est un point (par exemple, ".MyBackupAgent"), il est ajouté au nom du paquetage spécifié dans l'élément. Il n'y a pas de valeur par défaut. Le site doit être spécifié.

ce n'est pas un problème de sécurité.

151voto

Tor Norbye Points 4490

Pour cet avertissement de lint, et pour tous les autres avertissements de lint, notez que vous pouvez obtenir une explication plus complète que celle contenue dans le message d'erreur d'une ligne ; vous n'avez pas besoin de chercher sur le web pour plus d'informations.

Si vous utilisez lint via Eclipse, ouvrez la vue des avertissements lint, où vous pouvez sélectionner l'erreur lint et voir une explication plus longue, ou invoquez la correction rapide (Ctrl-1) sur la ligne d'erreur, et l'une des suggestions est "Expliquer ce problème", qui fera également apparaître une explication plus complète. Si vous n'utilisez pas Eclipse, vous pouvez générer un rapport HTML à partir de lint (lint --html ) qui inclut des explications complètes à côté des avertissements, ou vous pouvez demander à lint d'expliquer un problème particulier. Par exemple, le problème lié à allowBackup a pour identifiant "AllowBackup" (indiqué à la fin du message d'erreur), l'explication complète est donc la suivante :

$ ./lint --show AllowBackup

AllowBackup

Résumé : assurez-vous que allowBackup est explicitement défini dans le fichier manifeste

Priorité : 3 / 10 Gravité : Avertissement Catégorie : Sécurité

L'attribut allowBackup détermine si les données d'une application peuvent être sauvegardées et restaurées. et restaurées. Il est documenté ici .

Par défaut, cet indicateur est défini sur true. Lorsque ce drapeau est défini sur true, les données de l'application peuvent être sauvegardées et restaurées par l'utilisateur à l'aide de adb backup et adb restore. et adb restore.

Cela peut avoir des conséquences sur la sécurité d'une application. adb backup permet aux utilisateurs qui ont activé le débogage USB de copier des données d'application hors du périphérique. périphérique. Une fois sauvegardées, toutes les données de l'application peuvent être lues par l'utilisateur. adb restore permet de créer des données d'application à partir d'une source spécifiée par l'utilisateur. l'utilisateur. À la suite d'une restauration, les applications ne doivent pas supposer que les données, les autorisations de fichiers et les permissions de répertoires ont été restaurées. données, les autorisations de fichiers et de répertoires ont été créées par l'application elle-même. elle-même.

Réglage de allowBackup="false" permet d'exclure une application de la sauvegarde et de la restauration.

Pour corriger cet avertissement, décidez si votre application doit prendre en charge la sauvegarde, et définissez explicitement android:allowBackup=(true|false) "

Cliquez ici pour Plus d'informations

32voto

Igor Ganapolsky Points 2851

Voici ce que signifie réellement la sauvegarde dans ce sens :

Le service de sauvegarde d'Android vous permet de copier les données persistantes de votre application sur un stockage "en nuage" distant, afin de fournir un point de restauration pour les données et les paramètres de l'application. Si un utilisateur effectue une réinitialisation d'usine ou passe à un nouvel appareil fonctionnant sous Android, le système restaure automatiquement vos données de sauvegarde lorsque l'application est réinstallée. Ainsi, vos utilisateurs n'ont pas besoin de reproduire leurs données ou paramètres d'application précédents.

~Tiré de http://developer.Android.com/guide/topics/data/backup.html

Vous pouvez vous inscrire à ce service de sauvegarde en tant que développeur ici : https://developer.Android.com/google/backup/signup.html

Les types de données qui peuvent être sauvegardés sont les fichiers, les bases de données, les préférences partagées, le cache et la librairie. Ces éléments sont généralement stockés dans le répertoire /data/data/[com.myapp] de votre appareil, qui est protégé en lecture et ne peut être consulté que si vous disposez des privilèges Root.

UPDATE : Vous pouvez voir ce drapeau listé sur la doc api de BackupManager : BackupManager

8voto

yuntao Points 337

Ce n'est pas explicitement mentionné, mais d'après les documents suivants, je pense qu'il est sous-entendu qu'une application doit déclarer et implémenter un BackupAgent pour que la sauvegarde des données fonctionne, même dans le cas où allowBackup est défini à true (qui est la valeur par défaut).

http://developer.Android.com/reference/Android/R.attr.html#allowBackup http://developer.Android.com/reference/Android/app/backup/BackupManager.html http://developer.Android.com/guide/topics/data/backup.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X