java - 如何在 Java 中为用户代码创建类白名单?

标签 java whitelist

我正在创建一个运行下载的 Java 代码的应用程序,并且我希望能够准确指定代码可以访问哪些内置 Java 类。我想这涉及到使用 ClassLoader 和 SecurityManager,但我在 google 上找到的内容并没有帮助。

最佳答案

我认为在您的情况下,您应该创建自定义类加载器或使用配置为从指定 URL 加载类的 UrlClassLoader。请注意,文件系统中的文件可以被解释为 URL,所以不用担心。

例如,如果您有 2 个 jar 文件 foo.jar 和 bar.jar。 foo.jar 是允许的,bar.jar 在您的应用程序部分受到限制。只需将第一个 jar 添加到类加载器的路径中即可。第二个将是不可见的。

如果您希望在访问禁止的类时抛出 SecurityException,则必须实现自己的类加载器。它可能是 2 个 URL 类加载器的组合:一个带有 foo.jar,另一个带有类路径中的 bar.jar。第二个类加载器应该重写方法 loadClass 并在每次成功加载类时抛出安全异常。尽管我没有看到这个解决方案的严重好处。

关于java - 如何在 Java 中为用户代码创建类白名单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4926709/

相关文章:

java - 在阵列上移动玩家

java - GoogleApiClient 尚未连接异常

cordova - 如何在PhoneGap Build中设置域白名单?

ios - Cordova 白名单 iOS 10 SSL 错误 : Failed to load resource: An SSL error has occurred and a secure connection to the server cannot be made

Apache RewriteRule 仅允许白名单 URL

java - 如何让Hibernate只查询默认映射?

java - 从 getAdapter 到我的泛型类的转换如何进行

java - 如何在 Ubuntu 中安装 Spring Boot CLI?

javascript - 将 jQuery 用于白名单标签是否明智? JavaScript 中是否存在现有解决方案?

php - 如何在 PHP 中使用 Postgresql 白名单和准备语句?