Qué es "android: allowBackup"?


Desde el nueva versión de vista previa de ADT (versión 21), tienen una nueva advertencia de pelusa que me dice lo siguiente en el archivo de manifiesto (en la etiqueta de la aplicación):

Debe establecer explícitamente android: allowBackup en true o false (es true de forma predeterminada, y eso puede tener algunas implicaciones de seguridad para los datos de la aplicación)

En el sitio web oficial, han escrito:

Un par de comprobaciones nuevas: debe explícitamente decida si su aplicación permite copias de seguridad y una comprobación de etiquetas. Hay un nuevo indicador de línea de comandos para establecer la ruta de la biblioteca. Muchas mejoras en el análisis incremental de pelusa durante la edición.

¿Qué es esta advertencia? ¿Qué es la función de copia de seguridad y cómo la uso?

Además, ¿por qué la advertencia me dice que tiene implicaciones de seguridad? ¿Cuáles son las desventajas y ventajas de deshabilitar esta función?


Hay dos conceptos de copia de seguridad para el manifiesto:

  • "android: allowBackup " permite realizar copias de seguridad y restaurar a través de adb, como se muestra aquí:

Si permitir que la aplicación participe en la copia de seguridad y restaurar la infraestructura. Si este atributo se establece en false, no hay copia de seguridad o restauración de la aplicación se llevará a cabo, incluso por un copia de seguridad del sistema completo que de otra manera causaría que todos los datos de la aplicación ser guardado a través de adb. El valor predeterminado de este atributo es verdadero.

Esto se considera un problema de seguridad porque las personas podrían hacer una copia de seguridad de su aplicación a través de ADB y luego obtener datos privados de su aplicación en su PC.

Sin embargo, creo que no es un problema, ya que la mayoría de los usuarios no saben qué es adb, y si lo hacen, también sabrán cómo rootear el dispositivo. Las funciones ADB solo funcionarían si el dispositivo tiene la función de depuración habilitada, y esto necesita que el usuario la habilite.

Entonces, solo los usuarios que conectan sus dispositivos a la PC y habilitar la función de depuración se vería afectada. Si tienen una aplicación maliciosa en su PC que utiliza las herramientas ADB, esto podría ser problemático ya que la aplicación podría leer los datos de almacenamiento privado.

Creo que Google solo debe agregar una característica que está deshabilitada de forma predeterminada, en la categoría de desarrollador, para permitir la copia de seguridad y restauración de aplicaciones a través de ADB.

  • "android: BackupAgent " permite utilizar la función de copia de seguridad y restauración de la nube, como se muestra aquí y aquí:

El nombre de la clase que implementa el agente de copia de seguridad de la aplicación, una subclase de BackupAgent. El valor del atributo debe ser completamente nombre de clase calificado (por ejemplo, " com.ejemplo.proyecto.MyBackupAgent"). Sin embargo, como abreviatura, si el primer carácter del nombre es un punto (por ejemplo,".MyBackupAgent"), se adjunta al paquete nombre especificado en el elemento. No hay ningún valor predeterminado. El nombre debe ser indicado.

Esto no es un problema de seguridad.

Author: Peter Mortensen, 2012-09-29

6 answers

Para esta advertencia de pelusa, y para todas las demás advertencias de pelusa, tenga en cuenta que puede obtener una explicación más completa que solo lo que está en el mensaje de error de una línea; no tiene que buscar en la web para obtener más información.

Si está usando lint a través de Eclipse, abra la vista de advertencias de lint, donde puede seleccionar el error de lint y ver una explicación más larga, o invoque la corrección rápida (Ctrl-1) en la línea de error, y una de las sugerencias es "Explicar este problema", que también mostrará una explicación más completa. Si no está utilizando Eclipse, puede generar un informe HTML desde lint (lint --html <filename>) que incluya explicaciones completas junto a las advertencias, o puede pedirle a lint que explique un problema en particular. Por ejemplo, el problema relacionado con allowBackup tiene el id "allowBackup" (que se muestra al final del mensaje de error), por lo que la explicación más completa es:

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

Priority: 3 / 10
Severity: Warning
Category: Security

El atributo allowBackup determina si los datos de una aplicación pueden ser respaldados y restaurado. Está documentado aquí.

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)`"
Haga clic en

Aquí para Más información

 120
Author: Tor Norbye,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-21 11:07:48

Esto es lo que la copia de seguridad en este sentido realmente significa:

El servicio de copia de seguridad de Android le permite copiar los datos persistentes de la aplicación al almacenamiento remoto "en la nube", con el fin de proporcionar un punto de restauración para los datos y la configuración de la aplicación. Si un usuario realiza un restablecimiento de fábrica o se convierte en un nuevo dispositivo con Android, el sistema restaura automáticamente los datos de copia de seguridad cuando se vuelve a instalar la aplicación. De esta manera, sus usuarios no necesitan reproducir sus datos anteriores o configuración de la aplicación.

~Tomado de http://developer.android.com/guide/topics/data/backup.html

Puede registrarse para este servicio de copia de seguridad como desarrollador aquí: https://developer.android.com/google/backup/signup.html

El tipo de datos que se pueden respaldar son archivos, bases de datos, preferencias compartidas, caché y lib. Estos generalmente se almacenan en el / data / data/[com.myapp] directorio, que está protegido de lectura y no se puede acceder a menos que tengas privilegios de root.

ACTUALIZACIÓN : Puede ver este indicador listado en el documento api de BackupManager: BackupManager

 16
Author: Igor Ganapolsky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-17 13:50:07

Esto no se menciona explícitamente, pero basado en los siguientes documentos, creo que está implícito que una aplicación necesita declarar e implementar un BackupAgent para que la copia de seguridad de datos funcione, incluso en el caso de que allowBackup se establezca en true (que es el valor predeterminado valor).

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
Author: Yuntao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-17 00:02:36

Cuando deberíamos establecer android: allowBackup = false

No necesita root para hacer una copia de seguridad de los datos de un dispositivo Android a un PC, solo necesita acceso físico y habilitar la depuración en el menú del desarrollador. Esto le permite copiar datos del almacenamiento interno de la aplicación, que puede contener información confidencial que no desea que alguien robe, como su token de acceso de Facebook.

Estoy de acuerdo en que es bastante trivial en la mayoría de los casos, pero hay algunos casos que requieren esto capa adicional de protección contra ataques en los que está involucrado el acceso físico.

Tenga en cuenta que para evitar esto tendría que rootear el teléfono, en cuyo caso los datos confidenciales en el almacenamiento interno se borrarían cuando se produzca el restablecimiento de fábrica.

 3
Author: Xar E Ahmer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-15 08:24:09

Es privacidad preocupación. Se recomienda no permitir que los usuarios hagan copias de seguridad de una aplicación si contiene datos confidenciales. Al tener acceso a los archivos de copia de seguridad (es decir, cuando android:allowBackup="true"), es posible modificar/leer el contenido de una aplicación incluso en un dispositivo no arraigado.

Solución - utilice android:allowBackup="false" en el archivo de manifiesto.

Puedes leer este post para tener más información: Hackear Aplicaciones de Android Utilizando Técnicas de Copia de Seguridad

 1
Author: Sa Qada,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
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
Author: codeaamirkalimi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-10-03 14:24:50