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