Struts2--day04

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2--day04相关的知识,希望对你有一定的参考价值。

参考技术A Ognl是独立的项目,不是Struts2的一部分,只是经常和Struts2一起使用,获取值栈的数据。如果想要使用Ognl首先导入包。

El表达式,在jsp页面中获取域对象里面的数据,显示到页面中。

使用ognl和Struts2标签一起做下面的操作

值栈是数据的中转战,类似于域对象,之前操作,可以向域对象里面设置值,可以从域对象里面获取值。向域对象设置值,从域对象获取值。获取值栈的数据,可以通过struts2标签和ognl表达式获取。

每次访问action的时候,都会创建action实例,每个action实例里面只有一个值栈对象(valueStack对象)

在action实例中,值栈是如何存在的?

Struts2框架将把ValueStack对象保存在名为"struts.valueStack",的请求属性中,request中Request.setAttribute("struts.valueStack")

从request域对象里面使用getAttribute获取,名称为struts.valueStack

得到ActionContext,使用ActionContext里面的方法得到

值栈包含两部分内容

在action里面把数据放到域对象里面,这个数据存到context里面,context里面的Map结构,key名称为request、session、Application、attr、parameters

实现原理:首先增强request里面的getAttribute方法,而getAttribute方法获取域对象里面的值

增强逻辑:首先调用getAttribute获取域对象里面的值,如果获取了值,直接返回;如果获取不到域对象的值,获取到值栈对象,从值栈中把值取出来,赋值给域对象中的参数数据。所以,通过EL表达式就可以获取值栈数据。

用来获取值栈里面context里面的数据

一般使用在Struts2的表单标签里面

ognl不是Struts2表达式的一部分,是独立的项目,经常和Struts2的标签一起使用,获取值栈

类似域对象,数据的中转站,存值和取值

每个Action对象里面都只有一个值栈对象,在值栈request域里面

获取context里面数据,ognl之前写#

Root是list集合;Context是Map集合;Struts2里面默认操作数据都在Root里面,把数据放到域对象里面存到context里面

html中表单标签

Form :属性 action、method、enctype

在form里面有很多的输入项

大部分在input里面 type=””

text : 普通输入项

password :密码输入项

radio :单选输入项

checkbox:复选框

file: 文件上传项

hidden:隐藏项

button:普通按钮

submit: 提交按钮

reset: 重置按钮

select : 下拉输入框

textarea:文本域

struts2的表单标签对应的输入项,没有文件上传输入项

现象: 只是校验其中的一个输入项是否为空,但是把其他的输入项也清空了

(1) 获取隐藏项里面的uuid值

(2) 获取session域对象里面的uuid值

(3) 比较这两个值是否相同,如果相同,获取表单其他值进行操作

(4) 操作完成之后,把session域里面的值清空

(5) 如果这两个值,不相同,不进行操作

使用struts2里面拦截器实现,token,这个token拦截器不是默认执行的拦截器

token拦截器不是默认的所以要声明拦截器 struts.xml

四叶草安全 ▎高危Struts2 0day漏洞,EXP已流传

        近日,爆发严重等级高危的网络安全漏洞Struts2 0day,该漏洞影响范围极广,影响国内外绝大多数使用Struts2开发框架的站点。受影响的软件版本:Struts 2.3.5 - Struts 2.3.31, Struts 2.5 - Struts 2.5.10,该漏洞危害程度极高,黑客可以利用该漏洞通过浏览器在远程服务器上执行任意系统命令,将会对受影响站点造成严重影响,引发数据泄露、网页篡改、植入后门、成为肉鸡等安全事件。

图为利用漏洞成功执行ipconfig命令

有关该漏洞详情如下:

漏洞编号:  
CVE-2017-5638 
漏洞名称:  
基于 Jakarta plugin插件的Struts远程代码执行漏洞 
官方评级:  
高危  
漏洞描述:  
恶意用户可在上传文件时通过修改HTTP请求头中的Content-Type值来触发该漏洞,进而执行系统命令。 

目前针对此漏洞的EXP已经开始在网络流传为了广大用户的资产安全,请大家尽快进行漏洞检测及修复。
漏洞利用条件和方式:  
黑客通过Jakarta 文件上传插件实现远程利用该漏洞执行代码。  
漏洞影响范围:  

Struts 2.3.5 - Struts 2.3.31

Struts 2.5 - Struts 2.5.10

漏洞修复建议(或缓解措施):  

检测方式查看web目录下/WEB-INF/lib/目录下的struts-core.x.x.jar ,如果这个版本在Struts2.3.5 到 Struts2.3.31 以及 Struts2.5 到 Struts2.5.10之间则存在漏洞,

更行至Strusts2.3.32或者Strusts2.5.10.1,或使用第三方的防护设备进行防护。

临时解决方案:删除commons-fileupload-x.x.x.jar文件(会造成上传功能不可用)。

四叶草安全提示

        四叶草安全针对本次漏洞信息安全事故成立专项应急小组,为避免用户资产在本次漏洞中受到威胁和风险,保障资产安全,应急小组特提供绿色通道,为用户提供技术支持服务。

应急联系人:刘先生 13689198108  

感洞4大优势—为你信息安全保驾护航

四叶草安全 ▎高危Struts2 0day漏洞,EXP已流传

全天侯(7*24)小时实时监测,安全问题无死角

深度漏洞检测,以黑客视角模拟判断漏洞准确性

全面资产管理,自动化识别资产解放运维人员双手

丰富的风险管理报表,直观的风险可视化展示



以上是关于Struts2--day04的主要内容,如果未能解决你的问题,请参考以下文章

史上最严重Struts2 0day漏洞再度来袭!安恒玄武盾免费提供防护!

struts2之day01——04Struts2相关配置

struts2笔记04-XxxAware接口

JAVAEE——struts2_04:自定义拦截器struts2标签登陆功能和校验登陆拦截器的实现

04_Struts2标签

Java实战之01Struts2-04拦截器上传下载OGNL表达式