提问者:小点点

什么是“Android:AllowBackup”?


自从新的ADT预览版本(第21版)以来,他们有了一个新的lint警告,告诉我清单文件上的下一件事(在应用程序标记中):

应该显式地将android:allowbackup设置为true或false(默认情况下为true,这可能会对应用程序的数据产生一些安全影响)

在官方网站上,他们写道:

几个新的检查:您必须明确决定应用程序是否允许备份,以及一个标签检查。有一个新的命令行标志用于设置库路径。编辑时对增量林特分析的许多改进。

这是什么警告?什么是备份功能,如何使用它?

还有,为什么警告告诉我它对安全有影响?禁用此功能的缺点和优点是什么?

清单的备份有两个概念:

  • “Android:AllowBackup”允许通过adb进行备份和还原,如下所示:

是否允许应用程序参与备份和还原基础结构。如果将此属性设置为false,则不会执行应用程序的备份或还原,即使是全系统备份,否则会导致通过ADB保存所有应用程序数据。此属性的默认值为true。

这被认为是一个安全问题,因为人们可以通过ADB备份您的应用程序,然后将您的应用程序的私人数据进入他们的PC。

然而,我认为这并不是一个问题,因为大多数用户不知道adb是什么,如果他们知道,他们也会知道如何根设备。ADB功能只有在设备启用了调试功能时才会起作用,而这需要用户启用它。

因此,只有将设备连接到PC并启用调试功能的用户才会受到影响。如果他们的PC上有一个使用ADB工具的恶意应用程序,这可能会有问题,因为该应用程序可以读取私有存储数据。

我认为Google应该在开发者类别中添加一个默认禁用的功能,允许通过ADB备份和恢复应用程序。

  • “Android:BackupAgent”允许使用云的备份和还原功能,如下所示:

实现应用程序的备份代理(BackupAgent的一个子类)的类的名称。属性值应该是完全限定的类名(例如,“com.example.project.MyBackupAgent”)。但是,作为速记,如果名称的第一个字符是句点(例如,“.MyBackupAgent”),则将其追加到元素中指定的包名称之后。没有默认值。必须指定名称。

这不是安全问题。


共1个答案

匿名用户

对于此lint警告,以及所有其他lint警告,请注意,您可以得到比仅仅是一行错误消息中的内容更全面的解释;你不必在网上搜索更多的信息。

如果您是通过Eclipse使用lint,那么打开lint warnings视图,您可以在其中选择lint错误并看到更长的解释,或者在错误行上调用quick fix(Ctrl-1),其中一个建议是“Explain this issue”,它也会弹出一个更完整的解释。如果您不使用Eclipse,您可以从lint生成一个HTML报告(lint--html),其中包括警告旁边的完整解释,或者您可以要求lint解释一个特定的问题。例如,与allowBackup相关的问题具有idallowBackup(显示在错误消息的末尾),因此更完整的解释是:

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

Priority: 3 / 10
Severity: Warning
Category: Security

allowBackup属性确定应用程序的数据是否可以备份和还原,如本文所述。

默认情况下,此标志设置为true。当此标志设置为true时,用户可以使用ADB BackupADB Restore备份和还原应用程序数据。

这可能会对应用程序造成安全后果。ADB备份允许已启用USB调试的用户从设备复制应用程序数据。一旦备份,用户就可以读取所有应用程序数据。ADB Restore允许从用户指定的源创建应用程序数据。还原后,应用程序不应假定数据、文件权限和目录权限是由应用程序本身创建的。

设置allowbackup=“false”将应用程序从备份和还原中选择出来。

若要修复此警告,请确定应用程序是否应支持备份,并显式设置android:allowBackup=(truefalse)

单击此处了解更多信息