應用程序使用AIDL調用遠程服務時是否提供任何安全性?或者它就像惡意應用程序可以讀取數據一樣?Android AIDL安全
4
A
回答
2
在Android上,一個進程無法正常訪問另一個進程的內存。
當您使用AIDL接口綁定到應用程序時,系統將在這些過程之間建立連接。因此,只有這兩個應用程序可以讀取通過AIDL接口共享的信息。
如果你想可以肯定,你應該做一個額外的檢查在onBind(Intent intent)
,以確保它是你自己的應用程序,它是連接
提示:閱讀本頁面的第一部分:http://developer.android.com/guide/components/aidl.html
1
您可以隨時在您的方法中過濾以限制允許的軟件包。拋出SecurityException如果包裝沒有權限
Collection<String> callingpackages = getCallingPackages();
if(!callingpackages.contains("yourpackagename"){
//Throw securityException.
}
而且getCallingPackages
private Collection<String> getCallingPackages() {
int caller = Binder.getCallingUid();
if (caller == 0) {
return null;
}
return Lists.newArrayList(mContext.getPackageManager().getPackagesForUid(caller));
}
0
此外,在與遠程服務進行服務連接時。指定運行服務的應用程序的軟件包名稱。
像這樣
意圖serviceIntent =新意圖( 「com.android.vending.billing.InAppBillingService.BIND」); serviceIntent.setPackage(「com.android.vending」); bindService(serviceIntent,mServiceConn,Context.BIND_AUTO_CREATE);
注意:爲確保您的應用程序安全,始終在啓動服務時使用明確的意圖,並且不要爲您的服務聲明意圖過濾器。使用隱式意圖啓動服務會帶來安全隱患,因爲您無法確定將響應該意圖的服務,並且用戶無法看到啓動哪項服務。從Android 5.0(API級別21)開始,如果您以隱式意圖調用bindService(),則系統會引發異常。
相關問題
- 1. Android AIDL/Binder接口對象是線程安全的嗎?
- 2. Android Intellij IDEA 12 AIDL
- 3. 的Android AIDL進口
- 4. Android HttpWebConnection安全
- 5. Android包安全
- 6. Android Studio中AIDL缺少
- 7. 關於Android AIDL對象
- 8. 的Android AIDL着進口
- 9. 的Android AIDL StartProcess不工作
- 10. AIDL服務和Android開源
- 11. Android的 - 通過AIDL服務
- 12. Android apk安全性如何安全
- 13. Android廣播安全
- 14. android確保安全
- 15. Android PHP Webservice安全
- 16. Android SharedPreference安全性
- 17. Android文件安全
- 18. Android安全模式
- 19. Android安全問題
- 20. 源安全爲Android
- 21. AIDL錯誤
- 22. 爲AIDL文件
- 23. AIDL vs JAR/AAR
- 24. 使用AIDL
- 25. Aidl缺少錯誤
- 26. AIDL包裹使用
- 27. AIDL使用示例
- 28. Android Couchdb - libcouch和IPC Aidl服務
- 29. Android服務AIDL數據類型
- 30. Android AIDL支持「短」類型嗎?
您能否詳細說明「在onBind()中的額外檢查」?假設我在使用平臺簽名簽名的系統應用程序中有遠程服務。我有我自己的常規應用程序由我簽名,並希望確定該服務將只接受來自我的應用程序的綁定。我怎樣才能保證這一點? –
最好的辦法是創建一個權限並使用getCallingUid()調用進行檢查,如果該包具有綁定的權限。 –
https://stackoverflow.com/questions/12918731/how-to-get-application-package-name-or-uid-which-is-trying-to-bind-my-service-fr –