建議設(shè)置 android:allowBackup="false"
Android API Level 8及其以上Android系統(tǒng)提供了為應(yīng)用程序數(shù)據(jù)的備份和恢復(fù)功能,此功能的開關(guān)決定于該應(yīng)用程序中AndroidManifest.xml文件中的allowBackup屬性值 ,其屬性值默認(rèn)是true。當(dāng)allowBackup標(biāo)志為true時,用戶即可通過adb backup和adb restore來進(jìn)行對應(yīng)用數(shù)據(jù)的備份和恢復(fù),這可能會帶來一定的安全風(fēng)險。
Android屬性allowBackup安全風(fēng)險源于adb backup容許任何一個能夠打開USB 調(diào)試開關(guān)的人從Android手機(jī)中復(fù)制應(yīng)用數(shù)據(jù)到外設(shè),一旦應(yīng)用數(shù)據(jù)被備份之后,所有應(yīng)用數(shù)據(jù)都可被用戶讀??;adb restore容許用戶指定一個恢復(fù)的數(shù)據(jù)來源(即備份的應(yīng)用數(shù)據(jù))來恢復(fù)應(yīng)用程序數(shù)據(jù)的創(chuàng)建。因此,當(dāng)一個應(yīng)用數(shù)據(jù)被備份之后,用戶即可在其他Android手機(jī)或模擬器上安裝同一個應(yīng)用,以及通過恢復(fù)該備份的應(yīng)用數(shù)據(jù)到該設(shè)備上,在該設(shè)備上打開該應(yīng)用即可恢復(fù)到被備份的應(yīng)用程序的狀態(tài)。
尤其是通訊錄應(yīng)用,一旦應(yīng)用程序支持備份和恢復(fù)功能,攻擊者即可通過adb backup和adb restore進(jìn)行恢復(fù)新安裝的同一個應(yīng)用來查看聊天記錄等信息;對于支付金融類應(yīng)用,攻擊者可通過此來進(jìn)行惡意支付、盜取存款等;因此為了安全起見,開發(fā)者務(wù)必將allowBackup標(biāo)志值設(shè)置為false來關(guān)閉應(yīng)用程序的備份和恢復(fù)功能,以免造成信息泄露和財產(chǎn)損失。
所以如果通常情況下我們都需要將allowBackup屬性設(shè)置為false。
設(shè)置android:allowBackup="false"可能會報錯,導(dǎo)致無法編譯。
出現(xiàn)這種情況通常可能是因為我們引入的一些三方庫中將allowBackup設(shè)置為了true(創(chuàng)建項目的時候默認(rèn)就是true)。解決辦法也比較簡單就是將三方庫的allowBackup屬性設(shè)置為false即可,或者在你的AndroidManifest清單文件中添加tools:replace="android:allowBackup"即可。如果有多個需要replace的可以用“,”(半角逗號)分隔,例如:tools:replace="android:label,android:allowBackup"。