真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

AndroidManifest.xml中含蓋的安全問題詳解

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的主要功能

  1. 命名應(yīng)用程序Java包,軟件包名稱作為應(yīng)用程序的唯一標(biāo)識符;
  2. 描述了應(yīng)用程序的組件,其中包括構(gòu)成應(yīng)用程序的Activity,Service,Broadcast Receiver和Content Provider;它還命名實(shí)現(xiàn)每個組件并發(fā)布其功能的類,例如Intent可以處理的消息。這些聲明通知Android系統(tǒng)的組件及其可以啟動的條件;
  3. 決定哪些processes主持application;
  4. 宣告這個App有哪些權(quán)限,它聲明應(yīng)用程序必須擁有的權(quán)限才能訪問API的受保護(hù)部分并與其他應(yīng)用程序交互。它還聲明其他人為了與應(yīng)用程序的組件交互而需要的權(quán)限; 5.它列出了Instrumentation在應(yīng)用程序運(yùn)行時提供概要分析和其他信息的類。這些聲明僅在應(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)險點(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
  • -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)試,即使是以用戶模式運(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)險

四大組件

  • 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文件中添加標(biāo)記,當(dāng)然也可以自定義屬于自己的permission。但是如果權(quán)限控制不當(dāng),那么就可能導(dǎo)致各種越權(quán)等安全問題。



android:protectionLevel=["normal" | "dangerous" | "signature" | "signatureOrSystem"]
  1. normal:這是最低風(fēng)險的權(quán)限,如果應(yīng)用聲明了此權(quán)限,系統(tǒng)直接默認(rèn)該應(yīng)用有此權(quán)限,也不會提示安裝應(yīng)用的用戶授權(quán);
  2. dangerous:系統(tǒng)在安裝此類權(quán)限聲明的應(yīng)用時會提示用戶,但是所有APP都能訪問和共享此權(quán)限;
  3. 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)
  4. 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、、、區(qū)別

最常用的當(dāng)屬,當(dāng)我們需要獲取某個權(quán)限的時候就必須在我們的manifest文件中聲明,此同級,具體權(quán)限列表請看此處

通常情況下我們不需要為自己的應(yīng)用程序聲明某個權(quán)限,除非你提供了供其他應(yīng)用程序調(diào)用的代碼或者數(shù)據(jù)。這個時候你才需要使用 這個標(biāo)簽。很顯然這個標(biāo)簽可以讓我們聲明自己的權(quán)限。比如:

那么在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中含蓋的安全問題詳解
網(wǎng)頁路徑:http://weahome.cn/article/jeiiec.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部