Что такое "android: allowBackup"?


с новая предварительная версия ADT (версия 21), у них есть новое предупреждение lint, которое говорит мне следующее в файле манифеста (в теге приложения):

должен явно установить android: allowBackup в true или false (это правда по умолчанию, и это может иметь некоторые последствия для безопасности данных приложения)

на официальный сайт, они написали:

несколько новых проверок: вы должны явно решить, разрешает ли ваше приложение резервное копирование и проверку метки. Существует новый флаг командной строки для установки пути к библиотеке. Многие улучшения в инкрементном анализе ворса при редактировании.

Что это за предупреждение? Что такое функция резервного копирования и как ее использовать?

кроме того, почему предупреждение говорит мне, что это имеет последствия для безопасности? Каковы недостатки и преимущества отключения этого особенность?


существует два понятия резервного копирования для манифеста:

  • "android:allowBackup " позволяет создавать резервные копии и восстанавливать через adb, как показано здесь:

разрешить ли приложению участвовать в резервном копировании и восстановление инфраструктуры. Если этот атрибут имеет значение false, резервное копирование не выполняется или восстановление приложения когда-либо будет выполнено, даже с помощью полная система резервное копирование, которое в противном случае приведет к тому, что все данные приложения быть сохранены через adb. Значение этого атрибута по умолчанию-true.

Это считается проблемой безопасности, потому что люди могут создавать резервные копии вашего приложения через АБР а затем получить личные данные вашего приложения в их ПК.

однако, я думаю, что это не проблема, так как большинство пользователей не знают, что такое adb, и если они это сделают, они также будут знать, как запустить устройство. Функции АБР будут работать только в том случае, если устройство имеет функцию отладки включена, и это необходимо пользователю, чтобы включить его.

таким образом, будут затронуты только пользователи, которые подключают свои устройства к ПК и включают функцию отладки. Если у них есть вредоносное приложение на своем ПК, которое использует инструменты ADB, это может быть проблематично, так как приложение может читать данные частного хранилища.

Я думаю, что Google должен просто добавить функцию, которая отключена по умолчанию в категории, чтобы резервное копирование и восстановление приложений через АБР.

  • "android:backupAgent " позволяет использовать функцию резервного копирования и восстановления облака, как показано здесь и здесь:

имя класса, который реализует агент резервного копирования приложения, подкласс BackupAgent. Значение атрибута должно быть полное полное имя класса (например, "ком.образец.проект.MyBackupAgent"). Однако, как стенограмма, если первый символ имени период (например, ".MyBackupAgent"), он прилагается к пакету имя, указанное в элементе. Нет по умолчанию. Этот имя должно быть указано.

Это не проблема безопасности.

6 208

6 ответов:

для этого предупреждения lint и для всех других предупреждений lint обратите внимание, что вы можете получить более полное объяснение, чем просто то, что находится в сообщении об ошибке одной строки; вам не нужно искать в Интернете дополнительную информацию.

Если вы используете lint через Eclipse, либо откройте представление предупреждения lint, где вы можете выбрать ошибку lint и увидеть более длинное объяснение, либо вызовите quickfix (Ctrl-1) в строке ошибки, и одно из предложений - "объяснить эту проблему", которая также появится более полная объяснение. Если вы не используете Eclipse, вы можете создать HTML-отчет из lint (lint --html <filename>), который включает в себя полные объяснения рядом с предупреждениями, или вы можете попросить lint объяснить конкретную проблему. Например, проблема, связанная с allowBackup имеет идентификатор " AllowBackup "(показано в конце сообщения об ошибке), поэтому более полное объяснение:

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

Priority: 3 / 10
Severity: Warning
Category: Security

атрибут allowBackup определяет возможность резервного копирования данных приложения и восстановили. Это задокументировано здесь.

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)`"

Нажмите здесь дополнительная информация

вот что на самом деле означает резервное копирование в этом смысле:

служба резервного копирования Android позволяет копировать ваши постоянные данные приложения в удаленное "облачное" хранилище, чтобы обеспечить точку восстановления для данных и настроек приложения. Если пользователь выполняет сброс настроек или преобразует данные в новое устройство на базе Android, система автоматически восстанавливает резервные копии данных при повторной установке приложения. Таким образом, пользователям не нужно воспроизводить свои предыдущие данные или настройки приложения.

~взято из http://developer.android.com/guide/topics/data/backup.html

вы можете зарегистрироваться для этой службы резервного копирования в качестве разработчика здесь: https://developer.android.com/google/backup/signup.html

тип данных, которые могут быть скопированы являются файлы, базы данных, sharedPreferences, кэш и lib. Они обычно хранятся в вашем устройстве /data/data / [com.каталог myapp], который защищен от чтения и не может быть доступен, если у вас нет привилегий root.

обновление: Вы можете увидеть этот флаг в списке на API doc BackupManager:BackupManager

Это явно не упоминается, но на основе следующих документов я думаю, что подразумевается, что приложение должно объявить и реализовать BackupAgent, чтобы резервное копирование данных работало, даже в том случае, когда allowBackup установлен в true (что является значением по умолчанию значение.)

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

когда мы должны установить android: allowBackup=false

вам не нужен root для резервного копирования данных с устройства android на ПК, вам нужен только физический доступ и включение отладки в меню разработчика. Это позволяет копировать данные из внутренней памяти приложения, которые могут содержать конфиденциальную информацию, которую вы не хотите, чтобы кто-то воровал, как ваш маркер доступа facebook.

Я согласен, что это довольно тривиально в большинстве случаев, но бывают и такие случаи которые требуют этого дополнительного уровня защиты от атак, где задействован физический доступ.

обратите внимание, что для того, чтобы обойти это, вам нужно рутировать телефон, в этом случае конфиденциальные данные во внутренней памяти будут стерты, когда сброс происходит.

Это конфиденциальность беспокойство. Рекомендуется запретить пользователям создавать резервные копии приложения, если оно содержит конфиденциальные данные. Имея доступ к резервным файлам (т. е. когда android:allowBackup="true"), его можно изменить/прочитать содержимое приложения даже на некорневых устройства.

решение - использовать android:allowBackup="false" в файле манифеста.

Вы можете прочитать этот пост, чтобы получить больше информации: Взлом Приложений Для Android С Использованием Методов Резервного Копирования

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"]