2

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

我的问题是:我找不到检测@操作员的方法。

4

2 回答 2

5

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
'''
于 2013-07-31T16:23:12.103 回答
0

groovy-sandbox库支持拦截这个。

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

于 2013-11-14T15:40:03.853 回答