Spring简介
Spring是JavaEE编程领域的一个轻量级开源框架,该框架由一个叫RodJohnson的程序员在年最早提出并随后创建,是为了解决企业级编程开发中的复杂性,业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用,实现敏捷开发的应用型框架。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。
年9月Spring3.0RC1发布后,Spring就引入了SpEL(SpringExpressionLanguage)。类比Struts2框架,会发现绝大部分的安全漏洞都和OGNL脱不了干系。尤其是远程命令执行漏洞,这导致Struts2越来越不受待见。
因此,Spring引入SpEL必然增加安全风险。事实上,过去多个SpringCVE都与其相关,如CVE--、CVE--、CVE--、CVE--等。
SpEL是什么
SpEL(SpringExpressionLanguage)是基于spring的一个表达式语言,类似于struts的OGNL,能够在运行时动态执行一些运算甚至一些指令,类似于Java的反射功能。就使用方法上来看,一共分为三类,分别是直接在注解中使用,在XML文件中使用和直接在代码块中使用。
SpEL原理如下∶
表达式:可以认为就是传入的字符串内容
解析器︰将字符串解析为表达式内容
上下文:表达式对象执行的环境
根对象和活动上下文对象∶根对象是默认的活动上下文对象,活动上下文对象表示了当前表达式操作的对象
Spring框架特征
1.看web应用程序的ico小图标,是一个小绿叶子
2.看报错页面,如果默认报错页面没有修复,那就是长这样
3.wappalyzer插件识别
4.f12看X-Application-Context头
本地环境搭建
安装IDEA