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

Depuis le nouvelle version Adt preview (version 21), ils ont un nouvel avertissement de peluche qui me dit la prochaine chose sur le fichier manifeste (dans la balise d'application):

Devrait explicitement définir android: allowBackup sur true ou false (c'est vrai 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:

Quelques nouvelles vérifications: vous devez explicitement décidez si votre application autorise les sauvegardes et une vérification de l'étiquette. 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émentielle des peluches lors de l'édition.

Quel est cet avertissement? Quelle est la fonction de sauvegarde, et comment puis-je l'utiliser?

Aussi, pourquoi l'avertissement me dit-il qu'il a des implications pour la sécurité? Quels sont les inconvénients et les avantages de la désactivation de cette fonctionnalité?


Il existe deux concepts de sauvegarde pour manifeste:

  • "android:allowBackup" permet de sauvegarder et restaurer via adb, comme le montre ici:

Indique s'il faut autoriser l'application à participer à la sauvegarde et restaurer l'infrastructure. Si cet attribut est défini sur false, aucune sauvegarde ou la restauration de l'application sera jamais effectuée, même par un sauvegarde complète du système qui provoquerait autrement toutes les données de l'application être sauvé via la BAD. La valeur par défaut de cet attribut est vrai.

Ceci est considéré comme un problème de sécurité car les utilisateurs peuvent sauvegarder votre application via ADB , puis obtenir des données privées de votre application sur leur PC.

Cependant, je pense que ce n'est pas un problème, car la plupart des utilisateurs ne savent pas ce qu'est adb, et s'ils le font, ils sauront également comment rooter le périphérique. Les fonctions ADB ne fonctionneraient que si la fonction de débogage est activée sur le périphérique, ce qui nécessite que l'utilisateur l'active.

Donc, seuls les utilisateurs qui connectent leurs appareils à le PC et activer la fonction de débogage serait affecté. S'ils ont une application malveillante sur leur PC qui utilise les outils de la BAD, cela pourrait être problématique car l'application pourrait lire les données de stockage privé.

Je pense que Google devrait simplement ajouter une fonctionnalité désactivée par défaut, dans la catégorie développeur, pour permettre la sauvegarde et la restauration des applications via ADB.

  • "android:backupAgent" permet d'utiliser la fonctionnalité sauvegarde et restauration de la nuée, comme le montre 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 entièrement nom de classe qualifié (par exemple, " com.exemple.projet.MyBackupAgent"). Cependant, comme une abréviation, si le premier caractère du nom est un période (par exemple, ".MyBackupAgent"), il est ajouté au paquet nom spécifié dans l'élément. Il n'y a pas de valeur par défaut. Le le nom doit être défini.

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

208
demandé sur Peter Mortensen 2012-09-29 02:55:02

6 réponses

Pour cet avertissement de peluches, et pour tous les autres avertissements de peluches, notez que vous pouvez obtenir une explication plus complète que ce qui est dans le message d'erreur d'une ligne; vous n'avez pas à rechercher sur le web pour plus d'informations.

Si vous utilisez lint via Eclipse, ouvrez la vue Avertissements lint, où vous pouvez sélectionner l'erreur lint et voir une explication plus longue, ou appelez le quickfix (Ctrl-1) sur la ligne d'erreur, et L'une des suggestions Est "expliquer ce problème", qui apparaîtra également une explication plus complète. Si vous n'utilisez pas Eclipse, vous pouvez générer un rapport HTML à partir de lint (lint --html <filename>) 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 l'id "AllowBackup" (affiché à la fin du message d'erreur), donc l'explication plus complète est:

$ ./lint --show AllowBackup
AllowBackup
-----------
Summary: Ensure that allowBackup is explicitly set in the application's
manifest

Priority: 3 / 10
Severity: Warning
Category: Security

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

By default, this flag is set to true. When this flag is set to true,
application data can be backed up and restored by the user using adb backup
and adb restore.

This may have security consequences for an application. adb backup allows
users who have enabled USB debugging to copy application data off of the
device. Once backed up, all application data can be read by the user. adb
restore allows creation of application data from a source specified by the
user. Following a restore, applications should not assume that the data, file
permissions, and directory permissions were created by the application
itself.

Setting `allowBackup="false"` opts an application out of both backup and
restore.

To fix this warning, decide whether your application should support backup,
and explicitly set `android:allowBackup=(true|false)`"

Cliquez ici pour Plus d'informations

120
répondu Tor Norbye 2018-02-21 11:07:48

Voici ce que la sauvegarde dans ce sens signifie vraiment:

Le service de sauvegarde D'Android vous permet de copier vos données d'application persistantes sur un stockage "cloud" 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 Convertit vers un nouvel appareil sous Android, le système restaure automatiquement vos données de sauvegarde lorsque l'application est réinstallée. De cette façon, vos utilisateurs n'ont pas besoin de reproduire leurs données précédentes ou les paramètres de l'application.

~Prises à partir 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 pouvant être sauvegardées sont les fichiers, bases de données, sharedPreferences, cache et lib. Ceux-ci sont généralement stockées dans votre appareil /data/data/com.répertoire myapp], qui est protégé en lecture et ne peut pas être consulté sauf si vous avez des privilèges root.

Mise à jour : Vous pouvez voir cet indicateur répertorié sur le document api de BackupManager: BackupManager

16
répondu Igor Ganapolsky 2014-10-17 13:50:07

Ceci n'est pas explicitement mentionné, mais sur la base des documents suivants, je pense qu'il est implicite qu'une application doit déclarer et implémenter un BackupAgent pour que la sauvegarde de données fonctionne, même dans le cas où allowBackup est défini sur true (qui est la valeur par défaut valeur).

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

7
répondu Yuntao 2012-11-17 00:02:36

Quand devrions-nous définir android: allowBackup = false

Vous n'avez pas besoin de root pour sauvegarder les données d'un appareil android sur un PC, vous avez seulement besoin d'un accès physique et d'activer le débogage dans le menu développeur. Cela vous permet de copier des données du stockage interne de l'application, qui peuvent contenir des informations sensibles que vous ne voulez pas laisser voler quelqu'un, comme votre jeton d'accès facebook.

Je suis d'accord que c'est assez trivial dans la plupart des cas, mais il y a certains cas qui l'exigent couche supplémentaire de protection contre les attaques où l'accès physique est impliqué.

Notez que pour contourner ce problème, vous devez rooter le téléphone, auquel cas les données sensibles dans le stockage interne seraient effacées lorsque la réinitialisation d'usine se produit.

3
répondu Xar E Ahmer 2015-01-15 08:24:09

Il estvie privée préoccupation. Il est recommandé d'interdire aux utilisateurs de sauvegarder une application si elle contient des données sensibles. Ayant accès aux fichiers de sauvegarde (c'est-à-dire lorsque android:allowBackup="true"), Il est possible de modifier / lire le contenu d'une application même sur un périphérique non enraciné.

Solution-utilisez android:allowBackup="false" dans le fichier manifeste.

Vous pouvez lire ce post pour avoir plus d'informations: Pirater Des Applications Android En Utilisant Des Techniques De Sauvegarde

1
répondu Sa Qada 2018-04-10 07:31:21

Android:allowBackup

        Whether to allow the application to participate in the backup and restore 
   infrastructure. If this attribute is set to false, no backup or restore of the 
   application will ever be performed, even by a full-system backup that would 
   otherwise cause all application data to be saved via adb. The default value of 
   this attribute is true.

Android: allowBackup=["true | / "false"]

-1
répondu codeaamirkalimi 2018-10-03 14:24:50