我正在尝试对MVEL表达式评估进行沙箱测试。不幸的是,默认情况下,MVEL包含表达式语言中的所有java.lang。*类,因此用户可以调用“Runtime.exit()”并杀死整个系统。
如何排除未使用addImport()显式添加的所有类?
我还无法制作VariableResolvers的正面或反面。
最佳答案
据我所知,这不受支持。
不久前,我公司的一个项目就遇到了这种需求。我们必须对MVEL进行很多更改,以引入一种配置自定义策略以控制对类型和方法的访问的方法。
问题是您还可以通过其完全限定的名称访问任何类,因此这不仅仅是删除默认导入的问题。
不幸的是,我不拥有使它可用的代码。
关于MVEL:如何使java.lang。*类不包含在表达式中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16069350/