Java安全策略:根据类加载器授予访问权限

时间:2011-04-07 08:59:09

标签: java security

我有一个加载插件(普通jar文件)并从中运行代码的应用程序。插件使用URLClassLoader加载。我想阻止这些插件访问文件和其他资源,同时保留我自己代码的所有权限。

以下是插件代码与我自己的应用程序及其库不同的两个功能: 1)它由为此目的创建的URLClassLoader加载。 2)将其jar文件复制到特定目录,URLClassLoader从该目录中获取它们。

但我不知道如何使用这两个功能来制定策略规则。类策略器根本不能在策略规则中使用(可理解,它是在运行时创建的)。该目录可用于授予特定权限,但不能将其删除。似乎没有“来自任何地方的代码除了这个目录”的语法。

还有其他选择吗?

1 个答案:

答案 0 :(得分:1)

子类URLClassLoader。在不使用URLClassLoader.newInstance的情况下,将您遗漏的安全位添加回来。覆盖URLClassLoader.getPermissions(CodeSource)以返回适当的权限。

如果父类加载器只具有插件[静态]使用的公共类型,那可能是最好的。应该从不同的子类加载器加载主应用程序。 package.access安全属性也可以隐藏实现类。