- 1、本文档共28页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Struts2框架安全缺陷.
Struts2框架安全缺陷[转贴] 收藏
本文介绍了java开发流行框架struts2以及webwork的一些安全缺陷,并举例说明框架本身以及开发人员使用框架时,所产生的种种安全问 题,以及作者挖掘框架安全漏洞的一些心得体会。
推荐以下人群阅读
了解java开发了解框架开发了解web application安全“网络安全爱好者”
正文
当前java开发网站,通常不会是纯JSP的,大都使用了java framework。
有了这些framework,让开发人员更加快速的开发出代码,也让代码非常具有可扩展性,那些分层架构的思想,更是深入人心。这些也大大影响了安 全代码审核,曾提出“分层审核代码”的思想,比如在DAO层专门检查sql注入,在view层检查xss等。这些框架都有自己的层级,本次文章主要讲的是 struts这个框架的相关安全问题,也会有小部分涉及到struts后面的DAO层。
而struts这个框架更新占有市场份额极大的一个框架,它在各个层级中,位于如图所示位置:
可以看到struts在web应用中,负责处理接收用户数据,调用业务处理,以及展示数据的工作。所以本文把struts的功能分为 controller层和view层,controller层来完成接收用户数据,分发用户请求,而view专门用于展示数据。
一个单独的struts,是不合逻辑的,因为架构师通常喜欢多种框架集合,让它们各自负责某一层的处理。研究一个框架的安全问题,不能仅仅站在框架 的角度,还应该充分考虑到开发人员是如何使用这些框架的,他们最喜欢写什么样的代码,这样才能还原一个正常的、完整的web应用场景。
从有哪些信誉好的足球投注网站结果看,互联网中,绝大多数教程推荐struts+hibernate+spring这样的黄金组合,那么,我假设有一个应用使用了这个组 合,以struts为重点,站在攻击者的角度,层层分析struts的设计缺陷。
Struts2开发回顾与简单学习
为了让大家回顾或者学习一下struts2,我们一起来建立一个action、jsp页面,做一个接收用户输入,之后处理一下,再展示出来给用户的 过程,精通struts2的同学可以跳过此步。
struts回顾start首先建立action,叫做AaaaAction:
public class AaaaAction extends ActionSupport{ private String name; public String getName() { return name; } public void setName(String name) { = name; } public String execute(){ System.out.println(exe); return SUCCESS; } public String bbb(){ System.out.println(bbbbb); return SUCCESS; }}
请注意execute这个方法,让用户输入action的地址后,默认会访问这个方法。
之后配置struts.xml文件
action name=aaaaaaa result name=successuser/aaa.jsp/result/action
配置这个文件后,当用户输入
/app/aaaaaaa.action
的时候,struts会负责让AaaaAction中的execute方法处理用户请求。
处理之后,该方法返回“return SUCCESS;”,struts又负责找到result的name是seccuess所指向的jsp页面。把该页面解析后,返回给用户。
而用户看到的就是aaa.jsp页面的html代码。
struts2继承了webwork的所有优点,其实等于是webwork的升级,如果开发人员想让用户直接访问action中的某方法,而不是访 问默认的execute方法,只要定义一个方法叫做bbb,并且是public的,用户就可以直接输入
/app/aaaaaaa!bbb.action
直接访问了bbb方法。
那request中的参数如果接收呢?struts2中,这个过程被包装了起来,使用非常方便,只要在action中定义一个属性,叫做 public String name;。然后加入getName和setName方法,就可以像正常使用属性一样,接收到用户传递过来的变量。无论是get请求还是post请求,都 可以使用这种方式接收用户输入。
整个过程就如此简单,现在大家对流程
您可能关注的文档
最近下载
- 稀土金属冶炼新纪元.pptx VIP
- 初中语文新人教部编版七年级上册课后习题答案(2024秋).doc
- 外交学院招聘考试题库2024 .docx
- JB∕T 10474-2015 巷道堆垛类机械式停车设备.pdf
- 作业08 物主代词-2024年英语七年级暑假作业(外研版)(含解析).docx VIP
- 浙江省宁波市慈溪市2023-2024学年高二上学期1月期末化学试题 Word版含答案.docx
- 小学四年级道德与法治下册9《生活离不开他们》课件.ppt
- 绿色冶炼:铁炼新纪元.pptx VIP
- 2023年南昌大学公共课《毛泽东思想和中国特色社会主义理论体系概论》期末试卷A(有答案).docx VIP
- 《工业网络技术与应用(微课版)》教学教案.docx
文档评论(0)