Java 安全策略 : granting access depending on classloader

原文 标签 java security

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

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

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

还有其他选择吗?

最佳答案

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

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

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

相关文章:

java - Java多捕获异常错误

java - 在ArrayList中查找String索引的更快方法

java - 找不到HTTP请求的映射Spring Security

asp.net - 如何在 Web 表单中进行 Html.Encode

c# - 从我的 WPF 应用程序和 C# 库跟踪内存中的敏感数据

.net - 如何向 ASP.NET 应用程序添加 CardSpace 支持

java - 当有人覆盖抽象方法时,我可以强制保护它们吗?

java - 如果在 android 2.0 中以编程方式生成,则 Android Spinner 渲染不正确

javascript - 如何防止从 WiFi 接入点注入(inject)的横幅?

c++ - 获取文件属性(例如只读)和安全性属性(例如读取拒绝写入拒绝)的最佳实践是什么?