【发布时间】:2011-09-06 19:00:37
【问题描述】:
我正在开发一个可以由用户提供的 Groovy 脚本扩展的服务器应用程序。很明显,我想确保这些脚本在一个非常紧凑的沙箱中运行,它们不会破坏核心应用程序代码或消耗太多资源来超载服务器。
我研究了各种可能性,最终的解决方案可能是这些的组合:
在非常受限的安全管理器中运行脚本。该脚本在没有权限的 SecurityManager 中运行。必须声明其他权限(如 Android)。
启动新的 JVM。创建一个围绕 Runtime.exec 的 ScriptProcess 包装器,并使用安全管理器、有限堆等生成一个新的 JVM。因为我们启动了一个成熟的进程,我们可能会更好地控制监控不良行为的进程?不过,资源成本将是可怕的……另一种方法是在这里使用 Ant,但它可以扩展吗?
Java Monitor API 在 Java 6 中有一个具有监控能力的包。我们可以监控线程,或许可以检测无限循环和内存消耗。有人用过吗?
这些是我今天的想法。确保这些脚本正常运行并仍保持一定的可扩展性和性能的最佳方法是什么?
【问题讨论】:
标签: java security groovy embedding