應用內的廣播和應用外的廣播的安全性的考慮

1. 無論廣播還是服務,從安全的角度去分析 

在mainfest 文件中添加配置的內容

 如果Service等的AndroidManifest中聲明爲android:exported="false"
則該服務不能夠跨進程使用
.

Android系統中,BroadcastReceiver的設計初衷就是從全局考慮的,可以方便應用程序和系統、應用程序之間、應用程序內的通信,所以對單個應用程序而言BroadcastReceiver是存在安全性問題的,相應問題及解決如下:

1、當應用程序發送某個廣播時系統會將發送的Intent與系統中所有註冊的BroadcastReceiver的IntentFilter進行匹配,若匹配成功則執行相應的onReceive函數。可以通過類似sendBroadcast(Intent, String)的接口在發送廣播時指定接收者必須具備的permission。或通過Intent.setPackage設置廣播僅對某個程序有效。

2.  當應用程序註冊了某個廣播時,即便設置了IntentFilter還是會接收到來自其他應用程序的廣播進行匹配判斷。對於動態註冊的廣播可以通過類似registerReceiver(BroadcastReceiver, IntentFilter, String, android.os.Handler)的接口指定發送者必須具備的permission,對於靜態註冊的廣播可以通過android:exported="false"屬性表示接收者對外部應用程序不可用,即不接受來自外部的廣播。

上面兩個問題其實都可以通過LocalBroadcastManager來解決:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章