groovy - 如何阻止.@运算符?

标签 groovy

我在沙盒 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
'''

关于groovy - 如何阻止.@运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17975149/

相关文章:

groovy - 访问静态范围内的全局变量

tomcat - 在生产环境中访问 i18n 属性

groovy - 使用 Groovy 和 Jacob 扩展 HP Quality Center

jenkins - 在 jenkins 工作流的并行构建中获取失败构建的构建号

groovy - 在 groovy 中添加 double

groovy - Gremlin 存储 GremlinGroovyPipeline 并对其调用 .count() 时

java - groovyc 不会报告多个错误

mysql - 多态属于Grails中的多对多映射?

grails - 私有(private)方法在 Grails 2.5.1 中没有被 mock

groovy - Groovy 解析字符串的最有效方法?