我正在开发一个系统,允许开发者上传自定义的Groovy脚本和FreeMarker的模板。

我可以在非常高的水平使用默认Java安全基础设施提供一定的安全级别 - 即防止代码从访问文件系统或网络,但是我有需要限制对特定方法

我的计划是修改Groovy和Freemarker的运行时间来读取注解,将任一白名单或黑名单的某些方法,然而,这将迫使我维持他们的代码,这是不期望分支版本。

所有我基本上需要能够做的是防止特定方法的执行在Groovy或Freemarker的调用时。我认为一个黑客会看看调用堆栈,但是这将是一个巨大的打击速度(和它相当混乱)。

有没有人有任何其他想法实现呢?

有帮助吗?

解决方案

您可以通过继承GroovyClassLoader和AST游客中强制执行的限制做到这一点。这篇文章介绍了如何做到这一点:的http:// hamletdarcy .blogspot.com / 2009/01 / Groovy的编译时 - 间magic.html

此外,代码中引用有在Groovy 1.6安装程序的样品夹。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top