Struts简介
2024-09-03 14:21:25
一.简介
Apache Struts 2最初被称为WebWork 2,它是一个简洁的、可扩展的框架,可用于创建企业级Java web应用程序。设计这个框架是为了从构建、部署、到应用程序维护方面来简化整个开发周期。
二。曾经的安全问题
在2013年6月底发布的Struts 2.3.15版本被曝出存在重要的安全漏洞 ,主要问题如下:
1.可远程执行服务器脚本代码
用户可以构造http://host/struts2-blank/example/X.action?action:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}链接,command goes here可以换成是破坏脚本的路径和参数,比如fdisk -f等,造成破环系统无法运行的目的。
2.重定向漏洞
用户可以构造如知名网站淘宝的重定向连接,形如<a href="http://www.淘宝.com/item00001.html?redirect:http://黑客/getyourPassword">打折新款</a>,引导用户点击后进入钓鱼网站,在界面上让其进行登陆用以获取用户的密码。
造成的影响
苹果、中国移动、中国联通、百度、腾讯、淘宝、京东、Sohu、民生银行等大型企业的网站均遭毒手,运维 工程师苦不堪言。
应对措施
Apache团队紧急发布了Struts 2.3.15.1安全更新版本,可升级到此版本来解决上述问题。
三.Struts2 架构
从一个高水平角度看,Struts2 是一个MVC拉动的(或MVC2)框架,Struts2 的模型-视图-控制器模式是通过以下五个核心部分进行实现的:
- 操作(Actions)
- 拦截器(Interceptors)
- 值栈(Value Stack)/OGNL
- 结果(Result)/结果类型
- 视图技术
而Struts2 与传统的MVC框架略有不同,因为它由Action扮演模型的角色,而不是控制器,虽然这样会有一些重叠。
上图描述了Struts2 高级系统架构下的模型、视图及控制器。控制器是通过Struts2 分派servlet过滤器以及拦截器进行实现,模型是通过Actions进行实现,而视图则是结果类型和结果的结合。值栈和OGNL提供共同的路线、链接以及与其他组件之间的集成。
除了上述部分,还有许多组件相关的信息。web应用程序组件、Actions组件、拦截器组件、结果组件等等。
这些是Struts2 MVC模式的体系结构概述,在随后的章节中,我们将详细了解各个部分。
请求生命周期
通过上述图片的描述,我们可以依照下面几点解释在Struts2 中用户的请求生命周期:
- 用户发送一个资源需求的请求到服务器(例如:页面)。
- 核心控制器查看请求后确定适当的动作。
- 使用验证、文件上传等配置拦截器功能。
- 执行选择的动作来完成请求的操作。
- 另外,如果需要的话,配置的拦截器可做任何后期处理。
- 最后,由视图显示结果并返回给用户。
最新文章
- HTTP相关函数
- RET2LIBC 练习(3) -- VIRTUALALLOC
- Entity Framework Fluent API
- linux进程调度方法(SCHED_OTHER,SCHED_FIFO,SCHED_RR)
- SSIS 控制流和数据流(转)
- HDU1014Uniform Generator
- Oracle EBS 如何月结、对账[Z]
- Java学习之路:ArrayList用法
- oracle 的 SDO_GEOMETRY
- tongweb安装后无法启动问题
- java中的闭包
- 转:Spring与Mybatis整合的MapperScannerConfigurer处理过程源码分析
- 849. Maximize Distance to Closest Person
- Android 状态栏开发
- Linux vsftpd 配置文件详解
- Eclipse 语言包下载
- DPSR随手笔记
- spring boot继承web和mybatis时,调用接口删除记录出现的空指针以及解决办法
- nginx怎么与tomcat完美结合
- Java代码实现单例模式
热门文章
- Android 中更新 UI 的四种方式
- Jmeter联机负载时报错: connection refused to host localhost,nested exception is:java.net ConnectException:Connection refused:connect
- C# 后台服务 web.config 中 项“ConnectionString”已添加。问题
- Qt编写数据可视化大屏界面电子看板1-布局方案
- JSTL优点
- dozer转化对象
- ETH挖矿
- Docker容器组件
- 【VS开发】关于线程安全一些细节体会
- NDK学习笔记-JNI开发流程