第二章 Android 属性allowBackup引起的安全泄露问题

1. 概述

自从 API 8以来,谷歌为用户提供了应用程序数据备份和恢复的功能。此功能的开关是AndroidManifest.xml 文件的 allowBackup属性,默认为true开启。所以用户可以对我们的应用数据备份。当allowBackup标志为true时,用户即可通过adb backup和adb restore来进行对应用数据的备份和恢复,这可能会带来一定的安全风险。

为什么很多手机在我们通过USB调试连接数据的时候会弹出风险提示框,就是考虑到了安全风险。Android属性allowBackup安全风险源于adb backup容许任何一个能够打开USB 调试开关的人从Android手机中复制应用数据到外设,一旦应用数据被备份之后,所有应用数据都可被用户读取;adb restore容许用户指定一个恢复的数据来源(即备份的应用数据)来恢复应用程序数据的创建。因此,当用户的数据被备份了,那么他就可以将这个数据通过备份恢复到其他的手机或者模拟器上。这对用户来说是不被允许的。因此为了安全起见,开发者务必将allowBackup标志值设置为false来关闭应用程序的备份和恢复功能,以免造成信息泄露和财产损失。

2. allowBackup的风险控制方法

在上面的概述中,我们知道allowBackup的风险条件:第一,ApI版本在8以上;第二,allowBackup的值为true。现在的市场手机,API的版本基本上都是在8以上,所以我们只要将allowBackup 的值设置为false就可以了。或者我们可以通过手机设备的IMEI号来辨识来设备编号和备份前是否一致,不一致则直接跳转登陆页面的同时清空当前应用数据及缓存。allowBackup的值为false 对项目运行没有任何影响。

3. allowBackup 备份数据

  1. 打开控制台,输入adb backup -f back.ab -noapk 项目包名


    打开控制台
  2. 回车之后出现下列界面,我的是左边的,找了个中文的看着舒服点

image.png
  1. 输入密码,备份你的数据

  2. 这样你备份好了你的数据,然后将你备份的数据输入另外一台设备中。在另一台设备中安装程序,在控制台输入adb restore back.ab,弹出下列界面,输入密码

备份数据
模拟器2

参考文章:
Android属性allowBackup安全风险浅析
Android应用开发allowBackup敏感信息泄露的一点反思

推荐阅读更多精彩内容