SpringData是为了提供一个常见的、一致的数据访问模型,也就是说,它的目标就是为了能为所有数据库(包括关系型和非关系型)提供一致的数据操作接口,并且这些接口名非常通俗易懂,让人一看便知。它也是基于Spring框架的,即可以直接使用Spring的IoC和AOP等特性。
mongoTemplate是对mongodb java driver api的封装,SpringData MongoDB是SpringData技术封装了mongodb-driver技术之后的产物,它可以用更加简单的方式操作MongoDB。
Spring Data MongoDB应用程序在对包含查询参数占位符的SpEL表达式使用@Query或@Aggregation注解的查询方法进行值绑定时,若输入未被过滤,则易遭受SpEL注入攻击。该漏洞允许未经身份验证的攻击者构造恶意数据执行远程代码,最终获取服务器权限。
Spring Data MongoDB == 3.4.0
3.3.0 <= Spring Data MongoDB <= 3.3.4
更早或不再受支持的Spring Data MongoDB版本也受到此漏洞影响
根据diff(https://github.com/spring-projects/spring-data-mongodb/commit/7c5ac764b343d45e5d0abbaba4e82395b471b4c4?diff=split)记录发现,此次漏洞修复的主要位置在ParameterB