Security 在调用脚本之前扫描Groovy CallSiteArray

Security 在调用脚本之前扫描Groovy CallSiteArray,security,groovy,bytecode,mop,Security,Groovy,Bytecode,Mop,因此,我正在用groovy实现一个应用程序脚本接口,它们有一些相当严格的安全要求 在编译时,我们使用SecureASTCustomizer和一长串白名单、黑名单和表达式检查器来确保没有我们不想编译的东西 但是,编译后的脚本存储在理论上可以修改的持久存储中 因此,我们希望在执行编译后的脚本之前检查它。现在,我们使用MetaClassCreationHandle实例来处理这个问题,该实例返回一个自定义MetaClassImpl,用于检查每个通过invokeMethod的过程 但这会导致一些性能开销

因此,我正在用groovy实现一个应用程序脚本接口,它们有一些相当严格的安全要求

在编译时,我们使用SecureASTCustomizer和一长串白名单、黑名单和表达式检查器来确保没有我们不想编译的东西

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

因此,我们希望在执行编译后的脚本之前检查它。现在,我们使用MetaClassCreationHandle实例来处理这个问题,该实例返回一个自定义MetaClassImpl,用于检查每个通过invokeMethod的过程

但这会导致一些性能开销

当脚本被实例化时,它将“script”。$callSiteArray设置为invokestatic“script”。$getCallSiteArray()的结果

有没有一种方法可以让我自己调用这个方法,或者让构建的调用站点数组对我可用,这样我就可以通过它进行同样的检查?还是groovy调用站点中没有足够的信息

Groovy版本(不幸地)固定在2.1.6