OGNL 3.3.3与Spring Boot 2.7.2兼容问题及解决方案咨询
可行的升级方案
针对你遇到的OGNL版本冲突问题,有两个明确的解决路径,既能修复CVE-2020-15250漏洞,又能避免NoClassDefFoundError错误:
方案一:升级Thymeleaf到兼容OGNL 3.2+的版本
Spring Boot 2.7.x可以兼容Thymeleaf 3.1.x系列版本,该系列已经适配了OGNL 3.2+的API变更(不再依赖ognl.DefaultMemberAccess)。具体操作:
- 在
pom.xml中显式指定Thymeleaf的版本为3.1.x(比如最新的3.1.2.RELEASE),同时保留OGNL 3.3.3的强制指定:
<properties> <thymeleaf.version>3.1.2.RELEASE</thymeleaf.version> <ognl.version>3.3.3</ognl.version> </properties>
- 执行
mvn clean install更新依赖,此时Thymeleaf会使用OGNL 3.3.3的新API,不会再寻找已移除的DefaultMemberAccess类。
方案二:升级OGNL到3.1.x的安全修复版本,保留现有Thymeleaf版本
CVE-2020-15250漏洞在OGNL 3.1.26版本已经完成修复,该版本仍保留DefaultMemberAccess类,完全兼容Thymeleaf 3.0.15.RELEASE。具体操作:
- 移除
pom.xml中OGNL 3.3.3的强制指定,改为指定3.1.26版本:
<properties> <ognl.version>3.1.26</ognl.version> </properties>
- 执行依赖更新后,既修复了漏洞,又不会触发类找不到的错误,无需改动Thymeleaf相关配置。
内容的提问来源于stack exchange,提问作者phildeg31
相关产品推荐
相关产品推荐

