2012-11-29 44 views
1

我正在開發一個Android應用程序,允許插件通過OSGi(使用Apache Felix)運行。但是,我想在每個插件的基礎上實施某些安全性方面的內容。即允許插件訪問文件系統。另外,我想防止一般的反思。Android:替換爲缺少安全架構

到目前爲止我發現的所有教程都是指將OSGi安全性與加載標準Java SecurityManager結合使用。但是,後者在Android上不存在,從而使整個方法完全無法使用。 我不希望儘可能使用字節碼操作來防止各種插件中發生的事情,因爲這會很麻煩,我總是會錯過任何東西。

那麼,有沒有人有任何想法,我怎麼能得到類似於Android上的標準Java安全性的安全架構? 最重要的是,我如何防止反射被使用?

但是,有沒有辦法阻止I/O訪問,即基於每個線程?

回答

1

除非你願意修改核心操作系統,否則你不能。 Android標準權限可以限制對文件和API的訪問,但沒有什麼可以阻止反射。操作系統使用它,所以如果你完全阻止它,事情就會崩潰。通過UID阻止進程可能是可行的,但是您必須修改核心Java API的實現(在libcore中)。

1

沙箱中的沙箱!對於性能原因,這聽起來不是特別有吸引力的想法,但據我所知,SecurityManager仍然可以設置。所以你可以設置你自己的安全管理器,並隨時檢查它們。但是,this discussion表示Android團隊對基本庫的質量不甚瞭解。 (我可能已經取消了所有支票以獲得一些性能,但是我現在感覺到整個安全內部的想法是一個簡單,清晰和錯誤的解決方案......)

+0

嗨,感謝您的回覆,但我不確定這實際上是否有效,因爲使用System.setSecurityManager(sm)將導致SecurityException,並且System.getSecurityManager()將始終在Android中返回null。還是你的意思是別的? – user1863717