[发明专利]一种基于struts2架构文件上传安全控制方法在审
申请号: | 201410009598.0 | 申请日: | 2014-01-09 |
公开(公告)号: | CN103731430A | 公开(公告)日: | 2014-04-16 |
发明(设计)人: | 董再越;邓铭;田志宏 | 申请(专利权)人: | 北京哈工大计算机网络与信息安全技术研究中心;湖南合天智汇信息技术有限公司;北京合天智汇信息技术有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L29/08 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100000 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 struts2 架构 文件 上传 安全 控制 方法 | ||
技术领域
本发明涉及struts2架构应用开发技术领域,具体涉及一种基于struts2架构文件上传安全控制方法。
背景技术
struts2文件上传并没有提供自己的请求解析器,也就是说struts2不会自己去处理multipart/form-data的请求,它需要调用其他的请求解析器,将http请求中的表单域解析出来。struts2在原有的上传解析器继承上做了进一步封装,虽然封装后简化了文件上传,但是封装后,后台action开始处理之前文件已经在服务器上了,也就是说struts2先将上传的数据流保存为一个临时文件再交由后台处理,后台action能做就只是将文件复制到目的地址,这样就产生了诸多问题,具体如下:
(1)、文件的安全性尚未确定,即文件是否为合法类型及合法大小等等;
(2)、struts2会预先将文件缓存到临时目录或内存里,占据服务器存储空间;
(3)、无法获取文件上传进度,后台获取到请求时文件已经在服务器上了,上传过程没有进度;
(4)、文件保存后的安全管理存在问题:有的文件很可能是绑定恶意代码的,如果文件上传后被解析时的类型与预期的不一样就很可能出现安全问题,例如:使用以下命令,将正常图片与带有恶意代码的jsp(也可以是其他类型的代码文件)绑定在一起生成一个新的文件的方式,如以下示例:copy/b test.jpg+eyi.jsp test.jpg,该操作就是讲一个写有恶意代码的jsp文件与一个jpg图片文件合并成一个文件的操作,虽然上传时检测到的后缀名与类型是合法的,但是当这个图片被加载解析时,代码文件也会被解析执行,如果配合文件解析攻击,就能起到webshell的作用,即可执行自定义的各种脚本,所以不加处理的存储上传文件时不安全的。
为解决以上问题就要改进struts2的上传架构,现有的一些对struts2原有架构的改进目的都是趋于获取文件上传进度,即在不改变原有架构的基础上添加一个监听,来获取文件上传状态,但这是不完善的,相当于尚未确定文件是否安全、是否为合法类型前就先接收了这个文件,而且文件内容有可能绑定了恶意代码,不对文件进行处理的保存也是存在危险的。
发明内容
为了解决现有技术的不足,本发明提供一种基于struts2架构文件上传安全控制方法,使用该方法上传文件安全性高、不提前占据服务器存储且方便客户端获取文件的上传进度。
本发明提供一种基于struts2架构的文件上传安全控制方法,其包括以下步骤:
步骤S01:在服务器的structs2配置文件中需要添加bean标签配置和constant标签配置覆盖structs2原有自带的配置,以及新建MyRequestParseWrapper类;
步骤S02:客户端检查请求上传的文件的大小、类型、后缀名是否合法,不合法,返回错误提示;合法,则向服务器发送上传文件请求并且开始上传文件;
步骤S03:服务器的structs2配置文件调用MyRequestParseWrapper类,使服务器不执行任何存储文件流的操作,然后将文件流请求直接转到action,action检查请求上传的文件的大小、类型、后缀名是否合法,不合法,返回错误提示;合法,action将文件流存为临时文件并将临时文件的临时存放路径保存在缓存中,接着,action将临时文件保存到服务器中与临时存放路径对应的位置上,此时,提交上传文件的客户端可以实时的根据临时存放路径获取到文件已上传的大小,进而就可以转化成进度展示;
步骤S04:对文件进行重命名,将文件统一存储为安全的后缀名文件,若上传请求的原文件名如果需要保存,则与新文件名对应保存在数据库中,供需要时获取。
基于上述技术方案的公开,本发明提供一种基于struts2架构的文件上传安全控制方法具有以下有益效果:
(1)、通过不采用struts2原有的封装类,即不预先将上传请求文件保存到服务器的临时文件,这样,在对文件进行合法性检查前,文件就不会占据服务器存储;
(2)、将上传请求直接交由后台action处理,action获取到的request请求就是带文件的了,action在保存文件的过程中,可以方便获取文件上传的状态(上传路径和大小),客户端就可以实时调用action提供的相应方法来获取上传进度了;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京哈工大计算机网络与信息安全技术研究中心;湖南合天智汇信息技术有限公司;北京合天智汇信息技术有限公司,未经北京哈工大计算机网络与信息安全技术研究中心;湖南合天智汇信息技术有限公司;北京合天智汇信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410009598.0/2.html,转载请声明来源钻瓜专利网。