Java 如何使用自定义安全管理器运行插件?
现在,我正在使用自定义类加载器加载类,然后运行它们。然而,我想为这些类实现一个安全管理器,以防止它们做任何恶意的事情 这包括访问文件系统、网络、反射或正在运行的线程。事实上,我希望能够将允许他们访问/包含/实例化的API列入白名单。显然,我也希望它能够访问自己的文件Java 如何使用自定义安全管理器运行插件?,java,security,classloader,securitymanager,Java,Security,Classloader,Securitymanager,现在,我正在使用自定义类加载器加载类,然后运行它们。然而,我想为这些类实现一个安全管理器,以防止它们做任何恶意的事情 这包括访问文件系统、网络、反射或正在运行的线程。事实上,我希望能够将允许他们访问/包含/实例化的API列入白名单。显然,我也希望它能够访问自己的文件 所讨论的程序只是一个标准Java程序。不是Tomcat、嵌入式或小程序。您打算如何防止无限循环导致错误?一个插件可能会通过很多方式损害应用程序。或者一台机器。目前我并不担心。但我可能最终会监控它的方法运行的时间,如果它们运行的时间过
所讨论的程序只是一个标准Java程序。不是Tomcat、嵌入式或小程序。您打算如何防止无限循环导致错误?一个插件可能会通过很多方式损害应用程序。或者一台机器。目前我并不担心。但我可能最终会监控它的方法运行的时间,如果它们运行的时间过长,它将被手动终止。这是可能的,而且显然是
SecurityManager
的预期用途。但你的问题是什么?那。。。这是一个很好的问题。我想我是在问如何做到这一点。注意,由于Java 2,您很少需要自定义安全管理器你不能通过杀死这个方法来保护自己免受DoS的攻击。例如,该方法可能正在finalizer线程上运行。您需要接受不受信任的代码可以信任您并处理这一点。