Android引入了權(quán)限機(jī)制最初的出發(fā)點(diǎn)是為了通過權(quán)限策略來嚴(yán)格控制和處理安全問題,可參見:下面兩篇文章,但關(guān)于這個(gè)Android權(quán)限的機(jī)制仍然存在一些很小但不容忽略的問題,另外正所謂道高一尺魔高一丈,仍然存在一些可以繞過權(quán)限的方法。本文旨在分析權(quán)限機(jī)制的一些缺點(diǎn)和不足,并不能以此文章作為非法應(yīng)用的參考書。
Android Permission權(quán)限機(jī)制引子
Android Permission權(quán)限機(jī)制的具體使用
權(quán)限機(jī)制的缺陷和不足
(1) 應(yīng)用程序可以自由地命名一個(gè)新的權(quán)限,無須遵循一定的命名規(guī)則和限制,期盼用戶對不同應(yīng)用程序(包括未曾安裝過的程序)所使用的任意給定的權(quán)限名稱保持警覺是不夠明智的。
這句說的比較費(fèi)勁,其實(shí)就是android對一個(gè)新的應(yīng)用程序(Custom Permission App)聲明權(quán)限時(shí),并未規(guī)定權(quán)限的名稱的命名規(guī)則和限制,無規(guī)則不成方圓,這不規(guī)則的名稱多少會(huì)引起一些問題的。
(2) 權(quán)限一經(jīng)被授權(quán)給應(yīng)用程序后,在應(yīng)用程序的生命期間,它將不會(huì)被移除,即使聲明此權(quán)限的源程序被刪除。
一個(gè)聲明權(quán)限的應(yīng)用程序(Custom Permission App)被刪除之后,并沒有一些機(jī)制去通知哪些使用該權(quán)限的應(yīng)用(Custom Permission Client),而是在使用該權(quán)限的應(yīng)用(Custom Permission Client)運(yùn)行到指定位置時(shí)需要使用權(quán)限是才報(bào)錯(cuò)。
(3) 一個(gè)系統(tǒng)內(nèi)兩個(gè)不同的權(quán)限可以聲明相同的名字。
(4)權(quán)限不足時(shí),Log會(huì)報(bào),比如:
所以別有用心的開發(fā)者會(huì)想通過這個(gè)途徑去增加一定的權(quán)限(其他App聲明的權(quán)限),然后去call這個(gè)聲明權(quán)限的App。
樹立權(quán)限意識(shí)
劈開上面的缺陷不談,我們?nèi)匀粦?yīng)該需要重視一款應(yīng)用的權(quán)限,畢竟谷歌在Android權(quán)限方面已經(jīng)做了很大的努力。
(1)用戶初判斷
用戶可以通過下載的軟件來判斷權(quán)限是否過分,比如一款輸入法就不應(yīng)有發(fā)送短信的權(quán)限,一些記單詞的程序就不應(yīng)該有發(fā)送短信,查看聯(lián)系人和短消息的權(quán)限。用戶需要在安裝應(yīng)用程序前,需要有意識(shí)的注意每一個(gè)app的權(quán)限請求,Android會(huì)把一些high risk權(quán)限明顯列出來而忽略一些比較low risk的權(quán)限,所以用戶可以只看這些列出來的權(quán)限,并做到能去甄別它。
(2)第三方軟件/ROM
可以通過第三方軟件來限制權(quán)限,比如App Shield,這是是一個(gè)需要付費(fèi)的Android應(yīng)用,其原理是修改應(yīng)用程序的apk安裝包,刪除其中AndroidManifest.xml文件內(nèi),用于聲明權(quán)限的對應(yīng)”Android.Permission.*”條目,然后再用一個(gè)公開的證書對安裝包重新簽名(需要允許”未知源”),這樣一來,應(yīng)用程序就不會(huì)向系統(tǒng)申請?jiān)人璧臋?quán)限。當(dāng)應(yīng)用運(yùn)行至相應(yīng)的流程時(shí),系統(tǒng)將直接拒絕,從而達(dá)到用戶控制權(quán)限的目的。對于已安裝的應(yīng)用,AppShield也會(huì)按照同樣方法制作好apk安裝包,然后讓用戶先卸載原始的應(yīng)用,再安裝調(diào)整過的應(yīng)用。除了該應(yīng)用數(shù)字簽名外,用戶可以隨時(shí)通過執(zhí)行同樣的流程,將吊銷的權(quán)限恢復(fù)。當(dāng)然第三方ROM也可以做到,比如MIUI在軟件用到某一個(gè)權(quán)限時(shí)就會(huì)主動(dòng)攔截并詢問用戶是否授予權(quán)限。
越過權(quán)限機(jī)制
可是 主站蜘蛛池模板: 高陵县| 海晏县| 丹棱县| 泸溪县| 纳雍县| 会宁县| 阜康市| 华亭县| 黎川县| 连云港市| 彭州市| 巍山| 大悟县| 雷波县| 文昌市| 会泽县| 浠水县| 长宁区| 浦东新区| 阿拉善左旗| 临武县| 新郑市| 临江市| 台北县| 永仁县| 潢川县| 横峰县| 邯郸县| 安岳县| 方正县| 贵阳市| 天峻县| 兴宁市| 贺州市| 博湖县| 丰台区| 平顺县| 称多县| 通海县| 乐平市| 柳林县|