基于安全策略限制动态加载的类和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文件夹中的类都没有。这可能吗?我必须创建一个自定义类加载器吗?有没有更好的方式去做这件事?
谢谢。
你在这些文件夹有哪些? .class文件或.jar文件?为了让Java考虑.jar文件,您的代码库应该以/ *或/ - 结尾(仅供参考,请参阅:http://mindprod.com/jgloss/policyfile.html) – 2010-04-13 21:56:52
如果您确实不相信插件代码,那么你应该把它加载到不同的类加载器中(这是显然已经被遗忘的东西,但在Java2安全模型的相对早期就已知...)。 – 2010-04-14 00:42:49
本页回答对我非常有帮助:http://*.com/questions/502218/sandbox-against-malicious-code-in-a-java-application – Max 2010-04-14 03:12:10