当前位置: 首页 > 知识库问答 >
问题:

什么是“android:allowBackup”?

郑嘉年
2023-03-14

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

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

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

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

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

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

清单的备份有两个概念:

  • “android:allowBackup”允许通过adb进行备份和恢复,如下所示:

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

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

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

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

我认为谷歌应该在开发者类别中添加一个默认禁用的功能,以允许备份

  • android: BackupAgent允许使用云的备份和恢复功能,如这里和这里所示:

实现的类的名称是应用程序的备份代理,即BackupAgent的子类。属性值应该是完全限定的类名(如com.example.project.MyBackupAgent)。但是,作为速记,如果名称的第一个字符是句号(例如,“。MyBackupAgent"),它被附加到元素中指定的包名称。没有违约。必须指定名称。

这不是安全问题。

共有3个答案

曹鸿风
2023-03-14

这一点没有明确提到,但基于以下文档,我认为这意味着应用程序需要声明和实现BackupAgent,以便数据备份工作,即使在设置为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

鄢晔
2023-03-14

以下是这种意义上的备份的真正含义:

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

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

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

可以备份的数据类型包括文件、数据库、共享引用、缓存和库。这些文件通常存储在设备的/data/data/[com.myapp]目录中,该目录受读取保护,除非您具有root权限,否则无法访问。

更新:您可以在BackupManager的api文档:BackupManager上看到此标志

柏明亮
2023-03-14

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

如果您通过Eclipse使用lint,请打开lint warnings视图,在该视图中可以选择lint错误并查看更详细的解释,或者调用错误行上的快速修复(Ctrl-1),其中一个建议是“解释此问题”,这也将弹出更完整的解释。如果不使用Eclipse,则可以从lint(lint--HTML)生成HTML报告

$ ./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备份adb还原进行备份和还原。

adb备份允许启用USB调试的用户从设备上复制应用程序数据。一旦备份完成,用户就可以读取所有应用程序数据。adb恢复允许从用户指定的源创建应用程序数据。还原后,应用程序不应假定数据、文件权限和目录权限是由应用程序本身创建的。

设置allowBackup=“false”会将应用程序从备份和恢复中选择出来。

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

单击此处了解更多信息

 类似资料:
  • 问题内容: 什么是selenium? 当您打开Selenium的官方页面时,您首先读到的是“什么是Selenium?”中的“ Selenium automates browser”。部分。“selenium的哪个部分适合我?”部分 下面提供了Selenium WebDriver和Selenium IDE之间的选择。由此,我推断出Selenium是一组工具,并且该集合包括IDE,WebDriver

  • 硒是什么? 当你打开Selenium的官方页面,首先看到的是“什么是Selenium”中的“Selenium自动浏览器”。节。“硒的哪一部分对我合适?”下面提供了Selenium WebDriver和Selenium IDE之间的选择。由此,我推断Selenium是一个工具集合,该集合包括IDE、WebDriver API(语言绑定)、网格、Selenium独立服务器、浏览器驱动程序。一个人必须下

  • 本文向大家介绍什么是事务?什么是锁?相关面试题,主要包含被问及什么是事务?什么是锁?时的应答技巧和注意事项,需要的朋友参考一下 答:事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔

  • 我在这里读到 写入共享引用类型<代码> 理解<代码> 在另一个地方,我阅读了以下代码: 结构人中的a是什么 名称的含义是什么: 如果想避免使用

  • 我几天前听说了Docker的事,想过去看看。 但事实上,我不知道这个“容器”的用途是什么? 什么是容器? 它能取代一个专门用于开发的虚拟机吗? 简单地说,在公司中使用Docker的目的是什么?主要的优势?

  • 本文向大家介绍什么是batch normalization,原理是什么?相关面试题,主要包含被问及什么是batch normalization,原理是什么?时的应答技巧和注意事项,需要的朋友参考一下 Batch Normalization就是在训练过程,每一层输入加一个标准化处理。 深度神经网络之所以复杂有一个原因就是由于在训练的过程中上一层参数的更新使得每一层的输入一直在改变。所以有个办法就是去