概述
設置android:allowBackup="false"的必要性
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手機或模擬器上安裝同一個應用,以及通過恢復該備份的應用數據到該設備上,在該設備上打開該應用即可恢復到被備份的應用程序的狀態。
尤其是通訊錄應用,一旦應用程序支持備份和恢復功能,攻擊者即可通過adb backup和adb restore進行恢復新安裝的同一個應用來查看聊天記錄等信息;對於支付金融類應用,攻擊者可通過此來進行惡意支付、盜取存款等;因此為了安全起見,開發者務必將allowBackup標志值設置為false來關閉應用程序的備份和恢復功能,以免造成信息泄露和財產損失。
設置android:allowBackup="false"出錯的情況
一般是引用的第三方開源庫的AndroidManifest.xml文件設置android:allowBackup="true"了,導致兩者不統一,由於第三方庫大多是通過api、implementation方式引用的,無法修改其AndroidManifest.xml文件。
解決方案
在自己項目的AndroidManifest.xml中<application>標簽中添加tools:replace="android:allowBackup"。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="ccccccc" > <!--設置android:allowBackup="false",保證安全 https://blog.csdn.net/qq_31387043/article/details/51452782 https://blog.csdn.net/bgc525725278/article/details/71171241--> <application android:name=".MyApplication" android:allowBackup="false" tools:replace="android:allowBackup" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/TranslucentTheme"> </application> </manifest>
同理:
同樣的還有tools:replace="android:icon, android:theme,android:allowBackup"