Spring EL (SpEL) 代码执行

Spring EL (SpEL) code execution

我想使用 SpEL 来评估一些用户输入。但这打开了一个安全漏洞,因为 SpEL enginge 也执行代码并且可以启动 类 并访问静态对象。例如 T(System).exit(0) 退出系统。

是否可以防止此类代码执行?

避免这种情况的方法是从不评估表达式语言中的用户输入。

您几乎永远无法枚举并因此阻止执行所有可能的 "bad" 代码。

相反,您可以将用户输入用作具有固定 EL 表达式的环境变量(字符串、数字)。