因此,我正在使用groovy实现应用程序脚本界面,并且它们具有一些相当严格的安全要求。
在编译时,我们使用SecureASTCustomizer和一长串白色和黑色列表以及表达式检查器,以确保我们不想在一开始就编译。
但是,编译后的脚本存储在一个可以在理论上修改的持久存储中。
因此我们要在执行之前检查已编译的脚本。现在我们使用MetaClassCreationHandle实例处理它,它返回一个自定义MetaClassImpl,用于检查每次调用invokeMethod。
这会导致一些性能开销。
当脚本被实例化时,它会设置"脚本"。$ callSiteArray到invokestatic的结果"脚本"。$ getCallSiteArray()。
有没有办法可以自己调用该方法,或者让构建的调用站点数组可供我使用,以便我可以查看它并执行相同类型的检查?或者在常规的CallSites中没有足够的信息?
Groovy版本(不幸)已修复为2.1.6