Groovy 你是怎么认识这个接线员的?

Groovy 你是怎么认识这个接线员的?,groovy,Groovy,我在一个沙盒Groovy上工作,我想阻止@操作符。我正在使用一个SecureASTCustomizer,并且我已经编写了一个自定义SecureASTCustomizer.ExpressionChecker,在这里我删除了授权 我的问题是:我找不到检测@运算符的方法。您可以这样做: import org.codehaus.groovy.control.CompilerConfiguration import org.codehaus.groovy.control.customizers.Secur

我在一个沙盒Groovy上工作,我想阻止
@
操作符。我正在使用一个
SecureASTCustomizer
,并且我已经编写了一个自定义
SecureASTCustomizer.ExpressionChecker
,在这里我删除了授权


我的问题是:我找不到检测
@
运算符的方法。

您可以这样做:

import org.codehaus.groovy.control.CompilerConfiguration
import org.codehaus.groovy.control.customizers.SecureASTCustomizer
import org.codehaus.groovy.control.customizers.SecureASTCustomizer.ExpressionChecker as EC
import org.codehaus.groovy.ast.expr.AttributeExpression

def config = new CompilerConfiguration()
def secure = new SecureASTCustomizer()
secure.addExpressionCheckers ({ expr ->
    !(expr instanceof AttributeExpression)
} as SecureASTCustomizer.ExpressionChecker)
config.addCompilationCustomizers(secure)

def shell = new GroovyShell(config)
shell.evaluate '''
class A { int val }
def a = new A(val:123)
a.@val
'''
该库支持拦截此消息

SecureASTCustomizer
实际上根本不安全。不要尝试将其用于沙箱。)