Java 安全策略 : granting access depending on classloader

标签 java security

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

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

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

还有其他选择吗?

最佳答案

子类 URLClassLoader。重新添加您因不使用 URLClassLoader.newInstance 而错过的安全位。覆盖 URLClassLoader.getPermissions(CodeSource) 以返回适当的权限。

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

关于Java 安全策略 : granting access depending on classloader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5578501/

相关文章:

security - 登录系统,安全

.net - 打开文件 - 安全警告

.net - 使用新技术时的安全问题

java - Android 应用程序 - 每当蓝牙键盘连接/断开连接时触发 onCreate

java - 使用 setCurrentID 时在 TOC 中选择 JavaHelp 主题

java - f :convertDateTime displays wrong Date

java - java中的旋转圆弧

ios - 保护移动连接 - 存储 secret 和 key

java - 替换 Java 字符串中的 '\' 字符

javascript - 是否可以通过ExternalInterface调用允许FileReference.save()?