【发布时间】:2012-09-20 19:58:30
【问题描述】:
从new ADT preview version (version 21) 开始,他们有一个新的 lint 警告,告诉我清单文件中的下一件事(在应用程序标记中):
应明确将 android:allowBackup 设置为 true 或 false(默认情况下为 true,这可能会对应用程序的数据产生一些安全隐患)
在official website,他们写道:
一些新的检查:您必须明确决定您的应用是否允许备份,以及标签检查。有一个用于设置库路径的新命令行标志。在编辑时对增量 lint 分析进行了许多改进。
这是什么警告?什么是备份功能,如何使用?
另外,为什么警告告诉我它有安全隐患?禁用此功能有哪些优缺点?
清单的备份有两个概念:
- “android:allowBackup”允许通过adb进行备份和恢复,如图here:
是否允许应用参与备份和 恢复基础设施。如果此属性设置为 false,则不备份 或应用程序的恢复将永远被执行,即使是由 全系统备份,否则会导致所有应用程序数据 通过 adb 保存。该属性的默认值为 true。
这被认为是一个安全问题,因为人们可以通过 ADB 备份您的应用程序,然后将您应用程序的私人数据获取到他们的 PC 中。
但是,我认为这不是问题,因为大多数用户不知道 adb 是什么,如果他们知道,他们也会知道如何 root 设备。 ADB 功能只有在设备启用了调试功能时才能工作,这需要用户启用它。
因此,只有将设备连接到 PC 并启用调试功能的用户才会受到影响。如果他们的 PC 上有使用 ADB 工具的恶意应用程序,则可能会出现问题,因为该应用程序可以读取私有存储数据。
我认为 Google 应该在开发者类别中添加一个默认禁用的功能,以允许通过 ADB 备份和恢复应用程序。
实现应用程序备份代理的类的名称, BackupAgent 的子类。属性值应该是完全 限定类名(例如,“com.example.project.MyBackupAgent”)。 但是,作为简写,如果名称的第一个字符是 句号(例如,“.MyBackupAgent”),它被附加到包中 元素中指定的名称。没有默认值。这 必须指定名称。
这不是安全问题。
【问题讨论】:
-
我认为您应该在编辑中删除该附加信息,因为这是指备份云服务,而不是此问题实际引用的 ADB 备份工具(根据 Tor Norbye 的回答)
-
@Turbo 是的,你是对的。我认为当我阅读它时它并没有更新这么多,但现在很清楚了。我会更新这个问题。谢谢。我想知道 adb 备份功能是否可以在 root 设备上使用,即使对于将其设置为 false 的应用程序也是如此。
-
@IgorGanapolsky 所以我现在完全糊涂了。为什么他们在 2 个完全不同的功能中提到它?是否有可能相同的标志负责这两个功能?或者这是一个错误?你认为我应该取消勾选我勾选的答案吗?
-
@androiddeveloper 两个特性上存在相同属性的原因可能是因为它的最终目的是相同的:备份数据。无论是在设备上还是在云端...
-
作为 Android 用户,我想为任何发现此问题的人发表意见,并说我无法忍受禁用备份的应用程序——而且有很多应用程序。如果一个人可以访问未锁定的手机,他们应该能够从中复制数据。那时任何“安全”措施都毫无意义,因为他们总是可以通过手机获取数据。但作为用户,能够备份我的应用程序数据(无需生根和绊倒我的 Knox 位)非常有价值。如此多的应用程序不允许它真的令人沮丧,老实说,Android 甚至完全有这个开关。
标签: android adt compiler-warnings android-lint android-backup-service