¿Qué es "android: allowBackup"?

267

Desde la 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):

Debería establecer explícitamente android: allowBackup en verdadero o falso (es cierto 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 nuevas comprobaciones: debe decidir explícitamente si su aplicación permite copias de seguridad y una comprobación de etiquetas. Hay un nuevo indicador de línea de comando para configurar la ruta de la biblioteca. Muchas mejoras al análisis de pelusa incremental 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í :

Ya sea para permitir que la aplicación participe en la infraestructura de respaldo y restauración. Si este atributo se establece en falso, nunca se realizará una copia de seguridad o restauración de la aplicación, incluso mediante una copia de seguridad del sistema completo que de lo contrario haría que todos los datos de la aplicación se guarden 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.

Por lo tanto, solo los usuarios que conectan sus dispositivos a la PC y habilitan la función de depuración se verían afectados. Si tienen una aplicación maliciosa en su PC que usa 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 debería agregar una función 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 es el agente de respaldo de la aplicación, una subclase de BackupAgent. El valor del atributo debe ser un nombre de clase totalmente calificado (como "com.example.project.MyBackupAgent"). Sin embargo, como abreviatura, si el primer carácter del nombre es un punto (por ejemplo, ".MyBackupAgent"), se agrega al nombre del paquete especificado en el elemento. No hay defecto. El nombre debe ser especificado.

Este no es un problema de seguridad.

desarrollador de Android
fuente
Creo que debería eliminar esa información adicional en su edición, porque se refiere al servicio en la nube de copia de seguridad, en lugar de la herramienta de copia de seguridad ADB a la que hace referencia este problema (según la respuesta de Tor Norbye)
Tony Chan
@Turbo sí, tienes razón. Creo que no se actualizó tanto cuando lo leí, pero ahora está claro. Actualizaré la pregunta. Gracias. Me pregunto si la función de copia de seguridad de adb se puede usar en dispositivos rooteados, incluso para aplicaciones que lo han configurado como falso.
Desarrollador de Android
2
@IgorGanapolsky, así que estoy totalmente confundido en este momento. ¿Por qué lo mencionaron en 2 características totalmente diferentes? ¿Es posible que la misma bandera sea responsable de ambas características? o tal vez es un error? ¿Crees que debería desmarcar la respuesta que marqué?
Desarrollador de Android
1
@androiddeveloper La razón por la que existe el mismo atributo exacto en ambas características probablemente se deba al mismo propósito final: hacer una copia de seguridad de los datos. Ya sea en el dispositivo o en la nube ...
IgorGanapolsky
3
Como usuario de Android, me gustaría evaluar a cualquiera que encuentre esto y decir que no soporto las aplicaciones, y hay muchas, que deshabilitan la copia de seguridad. Si una persona tiene acceso a un teléfono desbloqueado, debería poder copiar datos de él. Cualquier medida de "seguridad" en ese punto no tiene sentido, ya que siempre podrían rootear el teléfono para obtener los datos. Pero como usuario, poder hacer una copia de seguridad de los datos de mi aplicación (sin rootear y disparar mi bit Knox) ​​es enormemente valioso. Es realmente frustrante que tantas aplicaciones lo rechacen y, sinceramente, Android incluso tiene este interruptor.
Nathan Stretch

Respuestas:

139

Para esta advertencia de pelusa, como 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á utilizando pelusa a través de Eclipse, abra la vista de advertencias de pelusa, donde puede seleccionar el error de pelusa y ver una explicación más larga, o invocar la solución rápida (Ctrl-1) en la línea de error, y una de las sugerencias es " Explica 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 incluye explicaciones completas junto a las advertencias, o puede pedirle a lint que explique un problema en particular. Por ejemplo, el problema relacionado con allowBackuptiene la identificación 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 allowBackupatributo determina si los datos de una aplicación se pueden respaldar y restaurar, como se documenta aquí .

Por defecto, este indicador está configurado en true. Cuando este indicador se establece en true, el usuario puede hacer una copia de seguridad y restaurar los datos de la aplicación utilizando adb backupy adb restore.

Esto puede tener consecuencias de seguridad para una aplicación. adb backuppermite a los usuarios que han habilitado la depuración de USB copiar datos de la aplicación del dispositivo. Una vez realizada la copia de seguridad, el usuario puede leer todos los datos de la aplicación. adb restorepermite la creación de datos de la aplicación desde una fuente especificada por el usuario. Después de una restauración, las aplicaciones no deben suponer que los datos, los permisos de archivo y los permisos de directorio fueron creados por la propia aplicación.

La configuración allowBackup="false"desactiva una aplicación tanto de copia de seguridad como de restauración

Para corregir esta advertencia, decida si su aplicación debe admitir copias de seguridad y establecer explícitamente android:allowBackup=(true|false)

Haga clic aquí para más información

Tor Norbye
fuente
35
los usuarios generalmente ni siquiera saben qué es adb, y si lo hacen, probablemente sepan cómo rootear su dispositivo y obtener los datos por sí mismos, ¿no?
Desarrollador de Android
1
@Tor Cuando dice "copiar datos de la aplicación del dispositivo", ¿quiere decir copiar de data / data / com.myapp o de sdcard? El directorio anterior está protegido y no se puede leer a menos que el dispositivo esté rooteado.
IgorGanapolsky
2
Entonces, para aclarar, esta copia de seguridad a la que Lint hace referencia es la herramienta ADB, y no el servicio de copia de seguridad en la nube, ¿correcto? Parece que muchas de las otras respuestas se están confundiendo.
Tony Chan
1
@IgorGanapolsky, creo que usar ADB copiará los datos privados, y es por eso que hay una advertencia. Creo que solo las personas que tienen habilitada la función de depuración y conectan su dispositivo a la PC. Estas personas suelen ser usuarios avanzados o desarrolladores, por lo que deben saber lo que están haciendo. El riesgo de seguridad es para las personas que lo hicieron por error e instalaron una aplicación maliciosa en la PC que utiliza la herramienta ADB para realizar esas operaciones. hay una aplicación para hacer copias de seguridad y restaurar sin root, llamada "Helium": play.google.com/store/apps/…
desarrollador de Android
"Si está utilizando pelusa a través de Eclipse ..." probablemente debería migrar a AndroidStudio ya que el complemento ADT está en desuso.
throws_exceptions_at_you
26

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

El servicio de copia de seguridad de Android le permite copiar los datos persistentes de su aplicación al almacenamiento remoto "en la nube", a 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 a un nuevo dispositivo con Android, el sistema restaurará automáticamente sus datos de respaldo cuando se reinstale la aplicación. De esta manera, sus usuarios no necesitan reproducir sus datos anteriores o la configuración de la aplicación.

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

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

El tipo de datos que se puede respaldar son archivos, bases de datos, Preferencias compartidas, caché y lib. En general, se almacenan en el directorio /data/data/[com.myapp] de su dispositivo, que está protegido contra lectura y no se puede acceder a menos que tenga privilegios de root.

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

IgorGanapolsky
fuente
44
Creo que los cambios en el nivel 23 de API apuntan a que esta es la respuesta correcta. Aquí están los documentos de capacitación para los cambios: developer.android.com/training/backup/autosyncapi.html
pumpkinpie65
8

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

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

Yuntao
fuente
¿Qué pasa si la aplicación no tiene nada relacionado con el agente de respaldo? ¿Android hará una copia de seguridad de sus datos automáticamente?
Desarrollador de Android
1
la respuesta correcta se encuentra aquí: stackoverflow.com/a/13806946/878126 . parece que no tiene nada que ver con el agente de respaldo. También actualicé mi pregunta para mostrar de qué se trata.
Desarrollador de Android
3

Es una cuestión de privacidad . Se recomienda no permitir a los usuarios hacer una copia de seguridad de una aplicación si contiene datos confidenciales. Al tener acceso a archivos de copia de seguridad (es decir, cuándo android:allowBackup="true"), es posible modificar / leer el contenido de una aplicación incluso en un dispositivo no rooteado.

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

Puede leer esta publicación para obtener más información: Hackear aplicaciones de Android utilizando técnicas de copia de seguridad

Ayaz Alifov
fuente
1
¿Hablas en serio con esta respuesta en 2017?
léalo
Puede deshabilitar las copias de seguridad configurando android: allowBackup en falso. Es posible que desee hacer esto si su aplicación puede recrear su estado a través de algún otro mecanismo o si su aplicación trata con información confidencial que Android no debería respaldar.
Edgar Khimich
Actualmente, puede excluir datos confidenciales de las copias de seguridad a través de atributos en manifiesto.
Yousha Aleayoub