android:allowBackup = false后编译报错

来源:互联网 发布:无锡市软件协会 编辑:程序博客网 时间:2024/06/06 01:57

阿里聚安全检测应用安全性的时候被警告高危风险:攻击者即可通过adb backup和adb restore进行恢复新安装的同一个应用来查看聊天记录等信息;对于支付金融类应用,攻击者可通过此来进行恶意支付、盗取存款等;因此为了安全起见,开发者务必将allowBackup标志值设置为false来关闭应用程序的备份和恢复功能,以免造成信息泄露和财产损失。(这段话是检查报告中原话)

推荐是在AndroidManifest文件的android:allowBackup属性设置成false。

心想就是加一行属性而已,加上吧!

<application        android:name=".AppApplication"        android:allowBackup="false"         android:hardwareAccelerated="false"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/AppTheme"/>

然后~ 编译报错!!!

Error:Execution failed for task ':app:processDebugManifest'.

Android studio 在报错提示下方推荐add tools:replace=”android:allowBackup”。

于是在,在application节点下加入 tools:replace=”android:allowBackup”:

<application        tools:replace="android:allowBackup"        android:name=".AppApplication"        android:allowBackup="false"         android:hardwareAccelerated="false"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/AppTheme"/>

Build 通过

stackoverflow上也有人给出解释:https://stackoverflow.com/questions/25981156/tools-replace-not-replacing-in-android-manifest

好了问题解决了,我们继续看下android:allowBackup这到底是个什么。

Android API Level 8及其以上 Android系统提供了为应用程序数据的备份和恢复功能,此功能的开关决定于该应用程序中AndroidManifest.xml文件中的allowBackup属性值[1] ,其属性值默认是True。当allowBackup标志为true时,用户即可通过adb backup和adb restore来进行对应用数据的备份和恢复,这可能会带来一定的安全风险。

Android属性allowBackup安全风险源于adb backup容许任何一个能够打开USB 调试开关的人从Android手机中复制应用数据到外设,一旦应用数据被备份之后,所有应用数据都可被用户读取;adb restore容许用户指定一个恢复的数据来源(即备份的应用数据)来恢复应用程序数据的创建。因此,当一个应用数据被备份之后,用户即可在其他Android手机或模拟器上安装同一个应用,以及通过恢复该备份的应用数据到该设备上,在该设备上打开该应用即可恢复到被备份的应用程序的状态。

想了解更深的可以参考下Android 属性 allowBackup 安全风险浅析

还有详解Android App AllowBackup配置带来的风险 个人感觉这篇文章例子要有趣些。


为了向别人、向世界证明自己而努力拼搏,而一旦你真的取得了成绩,才会明白:人无须向别人证明什么,只要你能超越自己。

阅读全文
1 0
原创粉丝点击