在调用脚本之前扫描Groovy CallSiteArray

时间:2016-08-24 12:25:22

标签: security groovy bytecode mop

因此,我正在使用groovy实现应用程序脚本界面,并且它们具有一些相当严格的安全要求。

在编译时,我们使用SecureASTCustomizer和一长串白色和黑色列表以及表达式检查器,以确保我们不想在一开始就编译。

但是,编译后的脚本存储在一个可以在理论上修改的持久存储中。

因此我们要在执行之前检查已编译的脚本。现在我们使用MetaClassCreationHandle实例处理它,它返回一个自定义MetaClassImpl,用于检查每次调用invokeMethod。

这会导致一些性能开销。

当脚本被实例化时,它会设置"脚本"。$ callSiteArray到invokestatic的结果"脚本"。$ getCallSiteArray()。

有没有办法可以自己调用该方法,或者让构建的调用站点数组可供我使用,以便我可以查看它并执行相同类型的检查?或者在常规的CallSites中没有足够的信息?

Groovy版本(不幸)已修复为2.1.6

0 个答案:

没有答案