新聞中心
0x00 關(guān)于AndroidManifest.xml
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、成都微信小程序、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了聊城免費建站歡迎大家使用!
AndroidManifest.xml 是每個android程序中必須的文件。它位于整個項目的根目錄,Manifest文件提供有關(guān)應(yīng)用程序到Android系統(tǒng)的基本信息,系統(tǒng)必須具有該信息才能運行任何應(yīng)用程序的代碼。換句話說APP是跑在Android系統(tǒng)上,既然要跑在其上,就必須提供信息給Android System,這些信息就存在AndroidManifest中。AndroidManifest.xml
存放在 app/src/main/ 目錄下。在反編譯APK文件后,其文件是以亂碼格式存在,需要進(jìn)行轉(zhuǎn)換才能正常查看。
AndroidManifest.xml的主要功能
- 命名應(yīng)用程序Java包,軟件包名稱作為應(yīng)用程序的唯一標(biāo)識符;
- 描述了應(yīng)用程序的組件,其中包括構(gòu)成應(yīng)用程序的Activity,Service,Broadcast Receiver和Content Provider;它還命名實現(xiàn)每個組件并發(fā)布其功能的類,例如Intent可以處理的消息。這些聲明通知Android系統(tǒng)的組件及其可以啟動的條件;
- 決定哪些processes主持application;
- 宣告這個App有哪些權(quán)限,它聲明應(yīng)用程序必須擁有的權(quán)限才能訪問API的受保護(hù)部分并與其他應(yīng)用程序交互。它還聲明其他人為了與應(yīng)用程序的組件交互而需要的權(quán)限; 5.它列出了Instrumentation在應(yīng)用程序運行時提供概要分析和其他信息的類。這些聲明僅在應(yīng)用程序正在開發(fā)中才會存在,并在應(yīng)用程序發(fā)布之前被刪除; 6.它聲明了應(yīng)用程序需要的最低級別的Android API; 7.它列出了應(yīng)用程序必須鏈接的庫。
<?xml version="1.0" encoding="utf-8" standalone="no"?>
0x01 AndroidManifest.xml風(fēng)險點分析
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
- -nosystem表示不備份系統(tǒng)應(yīng)用
- -noshared表示不備份應(yīng)用存儲在SD中的數(shù)據(jù)
- -apk表示備份應(yīng)用APK安裝包
- -f表示備份的.ab文件路徑和文件名,最后是要備份應(yīng)用的packageName
- restore是恢復(fù)備份的數(shù)據(jù)
2、debuggable設(shè)置風(fēng)險
該屬性用于指定應(yīng)用程序是否能夠被調(diào)試,即使是以用戶模式運行在設(shè)備上的時候,如果設(shè)置為true,則可以被調(diào)試;但是現(xiàn)在Android版本均默認(rèn)debuggable的屬性值為false,所以建議使用默認(rèn)配置。
android:debuggable=["true" | "false"]
3、組件導(dǎo)出風(fēng)險
四大組件
- Activity
- Broadcast Receive
- Service
- Content Provider
可導(dǎo)出的組件能被第三方APP任意調(diào)用,導(dǎo)致敏感信息泄露,并可能被利用于繞過認(rèn)證、惡意代碼注入、sql注入、拒絕服務(wù)等攻擊;
Activity中exported的默認(rèn)值
- 沒有intent filter時,默認(rèn)為false
- 有intent filter時,默認(rèn)為true
而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"]
- normal:這是最低風(fēng)險的權(quán)限,如果應(yīng)用聲明了此權(quán)限,系統(tǒng)直接默認(rèn)該應(yīng)用有此權(quán)限,也不會提示安裝應(yīng)用的用戶授權(quán);
- dangerous:系統(tǒng)在安裝此類權(quán)限聲明的應(yīng)用時會提示用戶,但是所有APP都能訪問和共享此權(quán)限;
- signature:這種權(quán)限級別叫做高級權(quán)限或者系統(tǒng)權(quán)限,只有當(dāng)發(fā)請求的應(yīng)用和接收此請求的應(yīng)用使用同一簽名文件,并且聲明了該權(quán)限才會授權(quán),并且是默認(rèn)授權(quán),不會提示用戶授權(quán)
- signatureOrSystem:這種權(quán)限應(yīng)該盡量避免使用,偏向系統(tǒng)級
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)!
文章標(biāo)題:AndroidManifest.xml中含蓋的安全問題詳解
本文鏈接:http://www.dlmjj.cn/article/jeiiec.html