web-dev-qa-db-fra.com

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

Depuis le nouvelle version de l'aperçu ADT (version 21) , ils ont un nouvel avertissement de peluches qui m'indique ce qui suit sur le Fichier manifeste (dans la balise d'application):

Devrait-il explicitement définir Android: allowBackup sur true ou false (c'est vrai par défaut, et cela peut avoir des conséquences sur la sécurité des données de l'application)

Dans le site officiel , ils ont écrit:

Quelques nouvelles vérifications: vous devez indiquer explicitement si votre application autorise les sauvegardes et effectuer une vérification des étiquettes. Un nouvel indicateur de ligne de commande permet de définir le chemin d'accès à la bibliothèque. Nombreuses améliorations apportées à l’analyse incrémentielle des peluches lors de l’édition.

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

Aussi, pourquoi l'avertissement me dit-il que cela a des implications sur 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 le manifeste:

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

Autoriser ou non l'application à participer à l'infrastructure de sauvegarde et de restauration. Si cet attribut est défini sur false, aucune sauvegarde ni restauration de l'application ne sera jamais effectuée, même par une sauvegarde complète du système qui entraînerait sinon la sauvegarde de toutes les 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 les utilisateurs peuvent sauvegarder votre application via ADB , puis obtenir les 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 savent, ils sauront également comment rooter le périphérique. Les fonctions ADB ne fonctionneront que si la fonctionnalité de débogage est activée sur le périphérique, ce qui oblige l'utilisateur à l'activer.

Ainsi, seuls les utilisateurs qui connectent leurs appareils au PC et activent la fonctionnalité de débogage seraient concernés. S'ils ont une application malveillante sur leur PC qui utilise les outils ADB, cela pourrait être problématique, car l'application pourrait lire les données de stockage privées.

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 la BAD.

  • "Android: backupAgent " permet d'utiliser la fonctionnalité de sauvegarde et de restauration du cloud, comme indiqué ici et ici :

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

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

245
android developer

Pour cet avertissement, ainsi que pour tous les autres avertissements, notez que vous pouvez obtenir une explication plus complète que celle contenue dans le message d'erreur sur une ligne; vous n'avez pas à rechercher plus d'informations sur le Web.

Si vous utilisez Lint via Eclipse, ouvrez la vue Avertissements, où vous pouvez sélectionner l’erreur de lint et obtenir une explication plus longue, ou invoquer le correctif (Ctrl-1) sur la ligne d’erreur. L’une des suggestions est "Expliquer". cette question ", 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 en regard des avertissements, ou vous pouvez demander à lint d'expliquer un problème particulier. Par exemple, le problème lié à allowBackup a l'id "AllowBackup" (indiqué à la fin du message d'erreur). Par conséquent, l'explication la plus complète est la suivante:

$ ./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ées. C'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

133
Tor Norbye

Voici ce que sauvegarde signifie en ce sens:

Le service de sauvegarde d'Android vous permet de copier vos données d'application persistantes 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 est converti en un nouveau périphérique Android, le système restaure automatiquement vos données de sauvegarde lors de la réinstallation de l'application. Ainsi, vos utilisateurs n'ont pas besoin de reproduire leurs données précédentes ou leurs paramètres d'application.

~ Extrait 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, les bases de données, les préférences partagées, le cache et les bibliothèques. Celles-ci sont généralement stockées dans le répertoire /data/data/[com.myapp] de votre appareil, qui est protégé en lecture et ne peut être accédé que si vous avez les privilèges root.

UPDATE: vous pouvez voir cet indicateur répertorié dans le document api de BackupManager: BackupManager

23
IgorGanapolsky

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 des données fonctionne, même dans le cas où allowBackup est défini sur true valeur par défaut).

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

8
Yuntao

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 uniquement besoin d'un accès physique et du débogage dans le menu du développeur. Cela vous permet de copier des données de la mémoire de stockage interne de l'application, qui peuvent contenir des informations sensibles que vous ne voulez pas laisser voler, telles que votre clé d'accès à Facebook.

Je conviens que c'est assez trivial dans la plupart des cas, mais il y a des cas qui nécessitent cette couche de protection supplémentaire contre les attaques impliquant un accès physique.

Notez que pour résoudre ce problème, vous devez installer le téléphone sur votre téléphone. Dans ce cas, les données sensibles stockées dans la mémoire de stockage interne seront effacées lors de la réinitialisation des paramètres d'usine.

4
Xar E Ahmer

C'est confidentialité préoccupation. Il est recommandé de ne pas autoriser les utilisateurs à sauvegarder une application si celle-ci contient des données sensibles. En 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 appareil non root.

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

Vous pouvez lire ce message pour avoir plus d'informations: Piratage Android Applications utilisant des techniques de sauvegarde

3
Ayaz Alifov