1

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

在编译时,我们将 SecureASTCustomizer 与一长串白名单和黑名单以及表达式检查器一起使用,以确保首先没有我们不想编译的内容。

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

所以我们想在执行之前检查编译好的脚本。现在我们使用 MetaClassCreationHandle 的实例来处理它,它返回一个自定义的 MetaClassImpl,它检查每个通过 invokeMethod 的传递。

不过,这会导致一些性能开销。

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

有没有办法我可以自己调用该方法,或者使构造的调用站点数组对我可用,以便我可以戳穿它并进行相同类型的检查?还是在 groovy CallSites 中没有足够的信息?

Groovy 版本(不幸的是)固定在 2.1.6

4

0 回答 0