2013-07-31 166 views

回答

5

你可以這樣說:

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) 
[email protected] 
''' 
+0

由於它的作品!你瘋了! –

0

groovy-sandbox庫支持攔截此。

SecureASTCustomizer實際上並不安全的。不要嘗試使用它的沙箱。)