什么是“android: allowbackup”?

新的ADT预览版本(版本21) .开始,他们有一个新的lint警告,告诉我清单文件(在应用程序标记中)的下一件事:

应该显式设置android:allowBackup为true或false(默认为true,这可能对应用程序的数据有一些安全隐患)

<强> < / >强官方网站中,他们写了:

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

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

另外,为什么警告告诉我它有安全隐患?禁用此功能的缺点和优点是什么?


清单的备份有两个概念:

是否允许应用程序参与备份和 恢复基础设施。如果此属性设置为false,则不备份 或应用程序的恢复将永远被执行,即使由 全系统备份,否则会导致所有应用程序数据 通过adb拯救。

.该属性默认值为true

这被认为是一个安全问题,因为人们可以通过亚洲开发银行备份你的应用程序,然后将你的应用程序的私人数据保存到他们的PC中。

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

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

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

实现应用程序备份代理的类的名称, BackupAgent的子类。属性值应该是full 限定类名(例如,“com.example.project.MyBackupAgent”)。 但是,作为一种简写,如果名称的第一个字符是 周期(例如,“.MyBackupAgent”),它被追加到包中 元素中指定的名称。没有违约。的

. Name必须指定

这不是一个安全问题。

172568 次浏览

这一点没有明确提到,但根据以下文档,我认为这意味着应用程序需要声明和实现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 < / p >

对于这个lint警告,就像所有其他lint警告一样,请注意,您可以得到一个更完整的解释,而不仅仅是在一行错误消息中;你不需要在网上搜索更多信息。

如果你通过Eclipse使用绒线,要么打开绒线警告视图,在那里你可以选择绒线错误并看到一个更长的解释,或者在错误行上调用快速修复(Ctrl-1),其中一个建议是“解释这个问题”,它也会弹出一个更完整的解释。如果你不使用Eclipse,你可以从lint (lint --html <filename>)生成一个HTML报告,其中包括警告旁边的完整解释,或者你可以让lint解释一个特定的问题。例如,与allowBackup相关的问题的id为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属性决定应用程序的数据是否可以备份和恢复,如在这里所述。

默认情况下,该标志被设置为true。当此标志设置为true时,用户可以使用adb backupadb restore备份和恢复应用程序数据。

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

设置allowBackup="false"将选择应用程序不进行备份和恢复。

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

点击这里获取更多的信息

下面是备份在这个意义上的真正含义:

Android的备份服务允许你将你的持久应用数据复制到远程“云”存储,为应用数据和设置提供一个恢复点。如果用户执行了出厂重置或转换到新的android设备,系统会在重新安装应用程序时自动恢复备份数据。这样,您的用户就不需要重现他们以前的数据或应用程序设置。

~取自http://developer.android.com/guide/topics/data/backup.html

您可以在这里注册此备份服务作为开发人员: https://developer.android.com/google/backup/signup.html < / p >

可备份的数据类型有文件、数据库、sharedPreferences、cache和lib。它们通常存储在设备的/data/data/[com]中。Myapp]目录,该目录受读保护,除非拥有根权限,否则无法访问。

< p > 更新: 你可以在BackupManager的api文档中看到这个标志:BackupManager

它是隐私的关注点。建议用户不允许备份包含敏感数据的应用程序。通过访问备份文件(即android:allowBackup="true"),即使在非根设备上也可以修改/读取应用程序的内容。

解决方案-在清单文件中使用android:allowBackup="false"

你可以阅读这篇文章来了解更多信息: 使用备份技术破解Android应用程序 < / p >