195

Desde el new ADT preview version (version 21), tienen una nueva advertencia pelusa que me dice lo siguiente en el archivo de manifiesto (en la etiqueta de solicitud):¿Qué es "android: allowBackup"?

deben establecer explícitamente androide: allowBackup a verdadero o falso (es cierto por defecto , y que puede tener algunas implicaciones de seguridad de los datos de la aplicación)

en la official website, han escrito:

Un par de nuevas comprobaciones: debe explícita de si su aplicación permite copias de seguridad y una verificación de etiqueta. Hay un nuevo indicador de línea de comando para configurar la ruta de la biblioteca. Muchas mejoras en el análisis incremental de pelusas durante la edición.

¿Qué es esta advertencia? ¿Cuál 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 hacer copias de seguridad y restaurar a través de ADB, como se muestra here:

Si permite que la aplicación participe en la copia de seguridad y restaurar la infraestructura. Si este atributo se establece en falso, no se realizará ninguna copia de seguridad o restauración de la aplicación, incluso mediante una copia de seguridad del sistema completo que de lo contrario causaría que todos los datos de la aplicación se guarden en mediante adb. El valor predeterminado de este atributo es verdadero.

Esto se considera un problema de seguridad porque la gente podría hacer una copia de seguridad de su aplicación a través del 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 de ADB solo funcionarían si el dispositivo tiene habilitada la característica de depuración y esto necesita que el usuario lo habilite.

Por lo tanto, solo los usuarios que conectan sus dispositivos a la PC y habilitan la función de depuración se verán 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 simplemente agregar una característica que está deshabilitada de forma predeterminada, en la categoría de desarrollador, para permitir la copia de seguridad & restauración de aplicaciones a través de ADB.

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

El nombre de la clase que implementan es agente de copia de seguridad de la aplicación , una subclase de BackupAgent. El valor del atributo debe ser un nombre de clase completo calificado (como, por ejemplo, "com.example.project.MyBackupAgent"). Sin embargo, como una abreviatura, si el primer carácter del nombre es un período (por ejemplo, ".MyBackupAgent"), se adjunta al nombre del paquete especificado en el elemento. No hay un defecto Se debe especificar el nombre .

Esto no es un problema de seguridad.

+0

Creo que se debe quitar esa información adicional en su edición, ya que es en referencia al servicio en la nube de copia de seguridad, en lugar de la herramienta de copia de seguridad ADB que esta cuestión es en realidad refiriendo (según la respuesta de Tor Norbye) –

+0

@Turbo sí, estás en lo cierto. Creo que no se actualizó tanto cuando lo leí, pero ahora está claro. voy a actualizar la pregunta. Gracias. Me pregunto si la función de copia de seguridad adb se puede utilizar en dispositivos rooteados, incluso para aplicaciones que lo han configurado como falso. –

+0

Mire el documento de BackupManager: http://developer.android.com/reference/android/app/backup/BackupManager.html Menciona totalmente Android: allowBackup !!! –

Respuesta

116

Por esta advertencia pelusa, y para todos los demás avisos de pelusa, tenga en cuenta que se puede obtener una explicación más completa que sólo lo que está en el mensaje de error una línea; no tiene que buscar en la web para obtener más información.

Si usa lint por Eclipse, abra la vista de advertencias sobre pelusas, donde puede seleccionar el error de pelusa y ver una explicación más larga, o invocar la corrección (Ctrl-1) en la línea de error, y una de sugerencias es "Explicar este problema", que también aparecerá 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 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 se pueden respaldar y restaurado. Está documentado here.

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 aquí para More information

+25

generalmente ni siquiera saben qué es adb, y si lo hacen, probablemente sepan cómo rootear su dispositivo y obtener los datos ellos mismos de todos modos, ¿no? –

+1

@Tor Cuando dice "copiar datos de aplicaciones fuera del dispositivo", ¿quiere decir copiar desde data/data/com.myapp o desde sdcard? El primer directorio está protegido y no se puede leer a menos que el dispositivo esté rooteado. –

+1

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 confunden. –

7

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

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

+0

¿Qué sucede si la aplicación no tiene nada relacionado con el agente de copia de seguridad? ¿Respaldará Android sus datos automáticamente sin embargo? –

+1

la respuesta correcta se encuentra aquí: http://stackoverflow.com/a/13806946/878126. parece que no tiene nada que ver con el agente de copia de seguridad. También actualicé mi pregunta para mostrar de qué se trata. Los usuarios de –

14

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

servicio de copia de seguridad de Android le permite copiar los datos de aplicación persistentes al almacenamiento remoto "nube", en para 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 la aplicación se vuelva a instalar. De esta forma, sus usuarios no necesitan reproducir sus datos o configuraciones de aplicaciones anteriores.

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

Usted puede inscribirse en este servicio de copia de seguridad como desarrollador aquí: https://developer.android.com/google/backup/signup.html

El tipo de datos que pueden ser respaldada son archivos, bases de datos, SharedPreferences, caché, y lib. Generalmente, estos 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 administrador.

ACTUALIZACIÓN: Se puede ver esta bandera que aparece en la API de documentación de BackupManager: BackupManager

+3

Creo que los cambios en el nivel de API 23 indican que esta es la respuesta correcta. Aquí están los documentos de capacitación para los cambios: http://developer.android.com/training/backup/autosyncapi.html – pumpkinpie65

3

Cuándo debemos establecer androide: allowBackup = false

No es necesario raíz a los datos de copia de seguridad de un dispositivo Android a una PC, solo necesita acceso físico y para 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 quiere que nadie 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 esta capa adicional de protección contra los ataques donde se trata de 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 ocurra el restablecimiento de fábrica.