android adt compiler-warnings android-lint android-backup-service

¿Qué es "Android: allowBackup"?



adt compiler-warnings (5)

Desde la nueva versión de vista previa de ADT (versión 21) , tienen una nueva advertencia de pelusas 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 true o false (es verdadero por defecto, 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 nuevos controles: debe decidir explícitamente si su aplicación permite copias de seguridad y un control de etiqueta. Hay una nueva bandera de línea de comando para configurar la ruta de la biblioteca. Muchas mejoras en el análisis de pelusas incrementales 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 desactivar esta función?

Hay dos conceptos de copia de seguridad para el manifiesto:

  • "android: allowBackup " permite realizar copias de seguridad y restaurar mediante adb, como se muestra here :

Ya sea para permitir que la aplicación participe en la infraestructura de copia de seguridad 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 si se realiza una copia de seguridad de todo el sistema que de lo contrario haría que todos los datos de la aplicación se guardaran a través de 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 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 de ADB solo funcionarán 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 conecten sus dispositivos al PC y habiliten la función de depuración se verán afectados. Si tienen una aplicación maliciosa en su PC que utiliza las herramientas de 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 manera 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 usar la función de copia de seguridad y restauración de la nube, como se muestra here y here :

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

Esto no es un problema de seguridad.


Aquí está lo que realmente significa respaldo en este sentido:

El servicio de copia de seguridad de Android le permite copiar los datos de su aplicación persistente al almacenamiento remoto en "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 en un nuevo dispositivo con Android, el sistema restaura automáticamente sus 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 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 de los que se puede hacer una copia de seguridad son archivos, bases de datos, preferencias compartidas, 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 él a menos que tenga privilegios de root.

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


Es una cuestión de privacidad . Se recomienda no permitir que los usuarios realicen una copia 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 rooteado.

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

Puedes leer esta publicación para obtener más información: Hackear aplicaciones de Android usando técnicas de respaldo



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

Si está usando la pelusa a través de Eclipse, abra la vista de advertencias de la pelusa, donde puede seleccionar el error de la pelusa y ver una explicación más larga, o invoque el foco rápido (Ctrl-1) en la línea de error, y una de las sugerencias es 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 pedir 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 restaurados. 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 here


¿Cuándo debemos configurar android: allowBackup = false

No necesita rootear para hacer una copia de seguridad de los datos desde un dispositivo Android a una 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 a 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 ataques en los que está involucrado el acceso físico.

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