2010-04-13 65 views
1

我想動態加載一組jar或類(即在運行時加載的插件)。同時,我想限制這些插件能夠在JVM中執行的操作。對於測試用例,我想限制它們幾乎所有的東西(現在我只允許讀取一個System.getProperty值)。基於安全策略限制動態加載的類和jar

我目前正在使用安全策略文件,但我很難指定一個文件夾或包在我的codeBase,但不是另一個的策略。

這是我現在的政策看起來如何:

grant codeBase "file:/home/max/programming/java/plugin/plugins/" { 
    permission java.util.PropertyPermission "java.version", "read"; 
}; 
grant codeBase "file:/home/max/programming/java/plugin/api/" { 
    permission java.security.AllPermission; 
}; 

凡(用於測試目的),在插件包和文件夾中的所有文件都受到限制,但在API文件夾中的類都沒有。這可能嗎?我必須創建一個自定義類加載器嗎?有沒有更好的方式去做這件事?

謝謝。

+1

你在這些文件夾有哪些? .class文件或.jar文件?爲了讓Java考慮.jar文件,您的代碼庫應該以/ *或/ - 結尾(僅供參考,請參閱:http://mindprod.com/jgloss/policyfile.html) – 2010-04-13 21:56:52

+0

如果您確實不相信插件代碼,那麼你應該把它加載到不同的類加載器中(這是顯然已經被遺忘的東西,但在Java2安全模型的相對早期就已知...)。 – 2010-04-14 00:42:49

+0

本頁回答對我非常有幫助:http://stackoverflow.com/questions/502218/sandbox-against-malicious-code-in-a-java-application – Max 2010-04-14 03:12:10

回答