主要观点总结
本文介绍了Spring表达式语言(SpEL)的基础知识、特性、使用方法和安全漏洞。SpEL是Spring框架中的强大表达式语言,支持在运行时查询和操作对象图。文章详细解释了SpEL的基础语法、定界符、表达式类型、操作类、方法调用、集合操作等,并展示了如何利用SpEL进行恶意利用,包括命令执行、弹计算器等。同时,也提供了检测与防御方法,如使用SimpleEvaluationContext替代StandardEvaluationContext以减少安全风险。
关键观点总结
关键观点1: SpEL基础知识
SpEL是Spring框架中的表达式语言,支持运行时查询和操作对象图。
关键观点2: SpEL特性
SpEL支持使用Bean的ID引用Bean、调用方法和访问对象属性,支持算数、关系、逻辑运算和集合操作,使用#{}作为定界符。
关键观点3: SpEL使用方法
在XML配置文件中使用SpEL设置类属性值为字面值,可以直接引用Bean、属性、方法,支持类类型表达式T(Type)调用类方法。
关键观点4: 恶意利用
SpEL可以用于恶意利用,如命令执行、弹计算器等,通过调用类方法和访问类属性实现。
关键观点5: 检测与防御
检测SpEL使用的关键类和方法调用,使用SimpleEvaluationContext替代StandardEvaluationContext以减少安全风险。
文章预览
原文于:http: //www .mi1k7ea.com/ 2020 / 01 / 10 /SpEL%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E%E6%80%BB%E7%BB%93/ #0x02-SpEL%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E 原文作者:Mi1k7ea 0x01 SpEL表达式基础 SpEL简介 在Spring 3中引入了Spring表达式语言(Spring Expression Language,简称SpEL),这是一种功能强大的表达式语言,支持在运行时查询和操作对象图,可以与基于XML和基于注解的Spring配置还有bean定义一起使用。 在Spring系列产品中,SpEL是表达式计算的基础,实现了与Spring生态系统所有产品无缝对接。Spring框架的核心功能之一就是通过依赖注入的方式来管理Bean之间的依赖关系,而SpEL可以方便快捷的对ApplicationContext中的Bean进行属性的装配和提取。由于它能够在运行时动态分配值,因此可以为我们节省大量Java代码。 SpEL有许多特性: 使用Bean的ID来引用Bean 可调
………………………………