新聞中心
HarmonyOS 中所有的應(yīng)用均在應(yīng)用沙盒內(nèi)運行。默認(rèn)情況下,應(yīng)用只能訪問有限的系統(tǒng)資源,系統(tǒng)負(fù)責(zé)管理應(yīng)用對資源的訪問權(quán)限。

應(yīng)用權(quán)限管理是由接口提供方(Ability)、接口使用方(應(yīng)用)、系統(tǒng)(包括云側(cè)和端側(cè))以及用戶等多方共同參與的整個流程,保證受限接口是在約定好的規(guī)則下被正常使用,避免接口被濫用而導(dǎo)致用戶、應(yīng)用和設(shè)備受損。
權(quán)限聲明
- 應(yīng)用需要在
config.json中使用“reqPermissions”屬性對需要的權(quán)限逐個進(jìn)行聲明。 - 若使用到的三方庫也涉及權(quán)限使用,也需統(tǒng)一在應(yīng)用的
config.json中逐個聲明。 - 沒有在
config.json中聲明的權(quán)限,應(yīng)用就無法獲得此權(quán)限的授權(quán)。
動態(tài)申請敏感權(quán)限
動態(tài)申請敏感權(quán)限基于用戶可知可控的原則,需要應(yīng)用在運行時主動調(diào)用系統(tǒng)動態(tài)申請權(quán)限的接口,系統(tǒng)彈框由用戶授權(quán),用戶結(jié)合應(yīng)用運行場景的上下文,識別出應(yīng)用申請相應(yīng)敏感權(quán)限的合理性,從而做出正確的選擇。
即使用戶向應(yīng)用授予了請求的權(quán)限,應(yīng)用在調(diào)用受此權(quán)限管控的接口前,也應(yīng)該先檢查自己有無此權(quán)限,而不能把之前授予的狀態(tài)持久化,因為用戶在動態(tài)授予后還可以通過設(shè)置取消應(yīng)用的權(quán)限。
有關(guān)于應(yīng)用動態(tài)申請敏感權(quán)限的詳細(xì)信息,請參閱動態(tài)申請權(quán)限。
自定義權(quán)限
HarmonyOS 為了保證應(yīng)用對外提供的接口不被惡意調(diào)用,需要對調(diào)用接口的調(diào)用者進(jìn)行鑒權(quán)。
大多情況下,系統(tǒng)已定義的權(quán)限滿足了應(yīng)用的基本需要,若有特殊的訪問控制需要,應(yīng)用可在config.json中以"defPermissions": []屬性來定義新的權(quán)限,并通過“availableScope”和“grantMode”兩個屬性分別確定權(quán)限的開放范圍和授權(quán)方式,使得權(quán)限定義更加靈活且易于理解。有關(guān) HarmonyOS 權(quán)限開放范圍和授權(quán)方式詳細(xì)的描述,請參閱權(quán)限授予方式字段說明和權(quán)限限制范圍字段說明。
為了避免應(yīng)用自定義新權(quán)限出現(xiàn)重名的情況,建議應(yīng)用對新權(quán)限的命名以包名的前兩個字段開頭,這樣可以防止不同開發(fā)者的應(yīng)用間出現(xiàn)自定義權(quán)限重名的情況。
權(quán)限保護(hù)方法
- 保護(hù) Ability:通過在
config.json里對應(yīng)的 Ability 中配置"permissions": ["權(quán)限名"]屬性,即可實現(xiàn)保護(hù)整個 Ability 的目的,無指定權(quán)限的應(yīng)用不能訪問此 Ability。 - 保護(hù) API:若 Ability 對外提供的數(shù)據(jù)或能力有多種,且開放范圍或保護(hù)級別也不同,可以針對不同的數(shù)據(jù)或能力在接口代碼實現(xiàn)中通過
verifyPermission(String permissionName,int pid,int uid)來對 uid 標(biāo)識的調(diào)用者進(jìn)行鑒權(quán)。
權(quán)限使用原則
- 權(quán)限申請最小化。跟用戶提供的功能無關(guān)的權(quán)限,不要申請;盡量采用其他無需權(quán)限的操作來實現(xiàn)相應(yīng)功能(如:通過
intent拉起系統(tǒng) UI 界面由用戶交互、應(yīng)用自己生成uuid代替設(shè)備 ID 等)。 - 權(quán)限申請完整。應(yīng)用所需權(quán)限(包括應(yīng)用調(diào)用到的三方庫依賴的權(quán)限)都要逐個在應(yīng)用的
config.json中按格式聲明。 - 滿足用戶可知。應(yīng)用申請的敏感權(quán)限的目的需要真實準(zhǔn)確告知用戶。
- 權(quán)限就近申請。應(yīng)用在用戶觸發(fā)相關(guān)業(yè)務(wù)功能時,就近提示用戶授予實現(xiàn)此功能所需的權(quán)限。
- 權(quán)限不擴散。在用戶未授權(quán)的情況下,不允許提供給其他應(yīng)用使用。
- 應(yīng)用自定義權(quán)限防止重名。建議以包名為前綴來命名權(quán)限,防止跟系統(tǒng)定義的權(quán)限重名。
網(wǎng)站欄目:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OS應(yīng)用權(quán)限管理
網(wǎng)頁地址:http://fisionsoft.com.cn/article/cdedhdo.html


咨詢
建站咨詢
