基于安全策略限制动态加载的类和jar

问题描述:

我想动态加载一组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://*.com/questions/502218/sandbox-against-malicious-code-in-a-java-application – Max 2010-04-14 03:12:10

这个回答解决了我的问题: Sandbox against malicious code in a Java application