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大优势—为你信息安全保驾护航
全天侯(7*24)小时实时监测,安全问题无死角
深度漏洞检测,以黑客视角模拟判断漏洞准确性
全面资产管理,自动化识别资产解放运维人员双手
丰富的风险管理报表,直观的风险可视化展示
以上是关于Struts2--day04的主要内容,如果未能解决你的问题,请参考以下文章
史上最严重Struts2 0day漏洞再度来袭!安恒玄武盾免费提供防护!