我在沙盒 Groovy 上工作,我想阻止.@
操作员。我正在使用 aSecureASTCustomizer
并且我已经编写了一个SecureASTCustomizer.ExpressionChecker
删除授权的自定义。
我的问题是:我找不到检测@
操作员的方法。
我在沙盒 Groovy 上工作,我想阻止.@
操作员。我正在使用 aSecureASTCustomizer
并且我已经编写了一个SecureASTCustomizer.ExpressionChecker
删除授权的自定义。
我的问题是:我找不到检测@
操作员的方法。
You can do it like this:
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
'''
groovy-sandbox库支持拦截这个。
(SecureASTCustomizer
实际上根本不安全。不要尝试将其用于沙箱。)