0x00 關(guān)于AndroidManifest.xml
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、成都微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了聊城免費(fèi)建站歡迎大家使用!
AndroidManifest.xml 是每個android程序中必須的文件。它位于整個項目的根目錄,Manifest文件提供有關(guān)應(yīng)用程序到Android系統(tǒng)的基本信息,系統(tǒng)必須具有該信息才能運(yùn)行任何應(yīng)用程序的代碼。換句話說APP是跑在Android系統(tǒng)上,既然要跑在其上,就必須提供信息給Android System,這些信息就存在AndroidManifest中。AndroidManifest.xml
存放在 app/src/main/ 目錄下。在反編譯APK文件后,其文件是以亂碼格式存在,需要進(jìn)行轉(zhuǎn)換才能正常查看。
AndroidManifest.xml的主要功能
<?xml version="1.0" encoding="utf-8" standalone="no"?>
0x01 AndroidManifest.xml風(fēng)險點(diǎn)分析
1、allowBackup設(shè)置風(fēng)險
Android API Level 8 (Android 2.1)及其以上Android系統(tǒng)提供了為應(yīng)用程序數(shù)據(jù)的備份和恢復(fù)功能,此功能的開關(guān)決定于該應(yīng)用程序中 AndroidManifest.xml 文件中的 allowBackup 屬性值,其屬性值默認(rèn)是 true。當(dāng)allowBackup的屬性值沒有顯示設(shè)置為false時,攻擊者可通過 adb backup 和 adb restore 來進(jìn)行對應(yīng)用數(shù)據(jù)的備份和恢復(fù),從而可能獲取明文存儲的用戶的敏感信息。
android:allowBackup=["true" | "false"]
$ adb backup -nosystem -noshared -apk -f com.example.demo $ adb restore com.example.demo
2、debuggable設(shè)置風(fēng)險
該屬性用于指定應(yīng)用程序是否能夠被調(diào)試,即使是以用戶模式運(yùn)行在設(shè)備上的時候,如果設(shè)置為true,則可以被調(diào)試;但是現(xiàn)在Android版本均默認(rèn)debuggable的屬性值為false,所以建議使用默認(rèn)配置。
android:debuggable=["true" | "false"]
3、組件導(dǎo)出風(fēng)險
四大組件
可導(dǎo)出的組件能被第三方APP任意調(diào)用,導(dǎo)致敏感信息泄露,并可能被利用于繞過認(rèn)證、惡意代碼注入、sql注入、拒絕服務(wù)等攻擊;
Activity中exported的默認(rèn)值
而intent filter標(biāo)簽代表是主Activity,而每個APP都會有一個主Activity,所以當(dāng)應(yīng)用的Activity不必要導(dǎo)出時,或者配置了intent filter標(biāo)簽,建議顯示設(shè)置android:exported="false"。如果組件必須要導(dǎo)出給其他應(yīng)用使用,建議對組件進(jìn)行權(quán)限控制。
Broadcast Receive和Service的默認(rèn)值都跟Activity的一樣。
Content Provider中exported的默認(rèn)值
當(dāng)minSdkVersion或者targetSdkVersion小于16時,默認(rèn)為true 大于17時,默認(rèn)為false
4、自定義權(quán)限風(fēng)險
在Android系統(tǒng)的安全模型中,應(yīng)用程序在默認(rèn)的情況下不可以執(zhí)行任何對其他應(yīng)用程序、系統(tǒng)或用戶帶來負(fù)面影響的操作。如果應(yīng)用需要執(zhí)行某些操作,就需要聲明使用這個操作對應(yīng)的權(quán)限,也就是在AndroidManifest.xml文件中添加
android:protectionLevel=["normal" | "dangerous" | "signature" | "signatureOrSystem"]
0x02 AndroidManifest.xml結(jié)構(gòu)
<?xmlversion="1.0"encoding="utf-8"?>
0x03 AndroidManifest.xml分節(jié)介紹
1、manifest
2、application
3、activity
4、intent-filter
5、meta-data
6、activity-alias
7、service
8、receiver
9、provider
10、uses-library 11、supports-screens
12、uses-configuration和uses-feature
13、uses-sdk
14、instrumentation
15、
最常用的當(dāng)屬
當(dāng)我們需要獲取某個權(quán)限的時候就必須在我們的manifest文件中聲明,此
與
通常情況下我們不需要為自己的應(yīng)用程序聲明某個權(quán)限,除非你提供了供其他應(yīng)用程序調(diào)用的代碼或者數(shù)據(jù)。這個時候你才需要使用
那么在activity中就可以聲明該自定義權(quán)限了,如:
android:permission="com.teleca.project.MY_SECURITY">
當(dāng)然自己聲明的permission也不能隨意的使用,還是需要使用
來聲明你需要該權(quán)限
就是聲明一個標(biāo)簽,該標(biāo)簽代表了一組permissions,而
是為一組permissions聲明了一個namespace。這兩個標(biāo)簽可以看之前的系列文章。
到此這篇關(guān)于AndroidManifest.xml中含蓋的安全問題的文章就介紹到這了,更多相關(guān)AndroidManifest.xml中含蓋的安全問題內(nèi)容請搜索創(chuàng)新互聯(lián)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持創(chuàng)新互聯(lián)!