zoukankan      html  css  js  c++  java
  • Struts简介

    一.简介

    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 中用户的请求生命周期:
    • 用户发送一个资源需求的请求到服务器(例如:页面)。
    • 核心控制器查看请求后确定适当的动作。
    • 使用验证、文件上传等配置拦截器功能。
    • 执行选择的动作来完成请求的操作。
    • 另外,如果需要的话,配置的拦截器可做任何后期处理。
    • 最后,由视图显示结果并返回给用户。
  • 相关阅读:
    vue2-highcharts 动态加载数据
    css选择器易混符号(~波浪号、+加号、>大于号)
    前端压缩字体文件---成功
    数组里添加一行数据(splice)
    new Date(date).getTime()不兼容iphone
    关于表单验证的正则表达式
    vuejs+webpack环境搭建
    Bootstrap弹出层(modal)垂直居中简单解决方案(无需修改js)
    $.get、$.post、$getJSON、$ajax的用法跟区别
    流式布局- 流式图片
  • 原文地址:https://www.cnblogs.com/lukelook/p/11124626.html
Copyright © 2011-2022 走看看