如何创建 Java 沙箱?

2022-08-31 20:19:07

我想让我的应用程序运行其他人的代码,也就是插件。但是,我必须通过哪些选项来使其安全,以便它们不会编写恶意代码。我如何控制他们能做什么或不能做什么?

我偶然发现JVM具有“内置沙箱”功能 - 它是什么,这是唯一的方法吗?是否有用于制作沙盒的第三方 Java 库?

我有哪些选择?感谢指南和示例的链接!


答案 1

您正在寻找一个安全经理。您可以通过指定策略来限制应用程序的权限。


答案 2
  • 定义和注册您自己的安全管理器将允许您限制代码的作用 - 请参阅SecurityManager的oracle文档。

  • 另外,请考虑创建一个单独的机制来加载代码 - 即,您可以编写或实例化另一个类加载器以从特殊位置加载代码。您可能有一个加载代码的约定 - 例如从特殊目录或从特殊格式的 zip 文件(如 WAR 文件和 JAR 文件)加载代码。如果你正在编写一个类加载器,它会让你不得不做工作来加载代码。这意味着,如果您看到要拒绝的某些内容(或某些依赖项),则可能无法加载代码。http://java.sun.com/javase/6/docs/api/java/lang/ClassLoader.html