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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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