CN103731430A - 一种基于struts2架构文件上传安全控制方法 - Google Patents
一种基于struts2架构文件上传安全控制方法 Download PDFInfo
- Publication number
- CN103731430A CN103731430A CN201410009598.0A CN201410009598A CN103731430A CN 103731430 A CN103731430 A CN 103731430A CN 201410009598 A CN201410009598 A CN 201410009598A CN 103731430 A CN103731430 A CN 103731430A
- Authority
- CN
- China
- Prior art keywords
- file
- server
- uploaded
- request
- action
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种基于struts2架构的文件上传安全控制方法,其包括以下步骤:步骤S01:在服务器的structs2配置文件中需要添加bean标签配置和constant标签配置及新建MyRequestParseWrapper类;步骤S02:客户端检查请求上传的文件是否合法;步骤S03:服务器的structs2配置文件调用MyRequestParseWrapper类,使服务器不执行任何存储文件流的操作,然后将文件流请求直接转到action,action检查请求上传的文件是否合法,而后进行临时存储及保存;步骤S04:对文件进行重命名,将文件统一存储为安全的后缀名文件,若上传请求的原文件名如果需要保存,则与新文件名对应保存在数据库中,供需要时获取;使用该方法上传文件安全性高、不提前占据服务器存储且方便客户端获取文件的上传进度。
Description
技术领域
本发明涉及struts2架构应用开发技术领域,具体涉及一种基于struts2架构文件上传安全控制方法。
背景技术
struts2文件上传并没有提供自己的请求解析器,也就是说struts2不会自己去处理multipart/form-data的请求,它需要调用其他的请求解析器,将http请求中的表单域解析出来。struts2在原有的上传解析器继承上做了进一步封装,虽然封装后简化了文件上传,但是封装后,后台action开始处理之前文件已经在服务器上了,也就是说struts2先将上传的数据流保存为一个临时文件再交由后台处理,后台action能做就只是将文件复制到目的地址,这样就产生了诸多问题,具体如下:
(1)、文件的安全性尚未确定,即文件是否为合法类型及合法大小等等;
(2)、struts2会预先将文件缓存到临时目录或内存里,占据服务器存储空间;
(3)、无法获取文件上传进度,后台获取到请求时文件已经在服务器上了,上传过程没有进度;
(4)、文件保存后的安全管理存在问题:有的文件很可能是绑定恶意代码的,如果文件上传后被解析时的类型与预期的不一样就很可能出现安全问题,例如:使用以下命令,将正常图片与带有恶意代码的jsp(也可以是其他类型的代码文件)绑定在一起生成一个新的文件的方式,如以下示例:copy/btest.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提供的相应方法来获取上传进度了;
(3)、文件保存到服务器上,action将临时文件保存到服务器中与临时存放路径对应的位置上,将文件重写,达到安全存储,安全解析的目的,这里的文件重写可以看作是文件的剪切操作。
附图说明
图1为本发明提出的一种基于struts2架构的文件上传安全控制方法的流程图。
具体实施方式
如图1所示,本发明提供一种基于struts2架构的文件上传安全控制方法,其包括以下步骤:
步骤S01:在服务器的structs2配置文件中需要添加bean标签配置和constant标签配置覆盖structs2原有自带的配置,以及新建MyRequestParseWrapper类;
步骤S02:客户端检查请求上传的文件的大小、类型、后缀名是否合法,不合法,返回错误提示;合法,则向服务器发送上传文件请求并且开始上传文件;
步骤S03:服务器的structs2配置文件中的bean标签配置和constant标签配置调用MyRequestParseWrapper类,使服务器不执行任何存储文件流的操作,然后将文件流请求直接转到action,action检查请求上传的文件的大小、类型、后缀名是否合法,不合法即返回错误提示;合法,action将文件流存为临时文件并将临时文件的临时存放路径保存在缓存中,接着,action将临时文件保存到临时存放路径对应的服务器相应的位置上,此时,提交上传文件的客户端可以实时的根据临时存放路径获取到文件已上传的大小,进而就可以转化成进度展示;
步骤S04:对文件进行重命名,将文件统一存储为安全的后缀名文件,若上传请求的原文件名如果需要保存,则与新文件名对应保存在数据库中,供需要时获取;这种方式就是文件的剪切操作,具体代码实现流程就是将临时文件数据读出然后输出到另一个文件中,然后删除原文件,目的就是去除文件中绑定的恶意代码,解析文件时也不会按照其他格式解析。
以下对步骤S01至步骤S03作进一步的说明如下:
在上传文件的时候,structs2封装request(文件上传请求)对象其实org.apache.struts2.dispatcher.multipart.MultiPartRequest,也就是说在action中拿到的实际类型是MultiPartRequestWrapper,此时action拿到对象时文件已经被保存,所以,为了不让structs2解析上传的文件,在structs2配置文件中需要添加bean标签配置和constant标签配置,覆盖structs2原有自带的配置,不用更改struct2的jar包文件,重写struts2的request这个封装类org.apache.struts2.dispatcher.multipart.MultiPartRequest,即新建MyRequestParseWrapper类,该类中有个功能是保存临时文件的parse方法,MyRequestParseWrapper继承原有JakartaMultiPartRequest的其他方法,然后重写parse方法,让服务器不执行保存临时文件,这样后台action获取到的request就是带有上传文件的了,系统就会自动调用MyRequestParseWrapper类,如下为MyRequestParseWrapper类的示例:
如下为bean标签配置和constant标签配置调MyRequestParseWrapper类,的示例:
应该注意到并理解,在不脱离后附的权利要求所要求的本发明的精神和范围的情况下,能够对上述详细描述的本发明做出各种修改和改进,因此,要求保护的技术方案的范围不受所给出的任何特定示范教导的限制。
Claims (1)
1.一种基于struts2架构的文件上传安全控制方法,其特征在于,其包括以下步骤:
步骤S01:在服务器的structs2配置文件中需要添加bean标签配置和constant标签配置覆盖structs2原有自带的配置,以及新建MyRequestParseWrapper类;
步骤S02:客户端检查请求上传的文件的大小、类型、后缀名是否合法,不合法,返回错误提示;合法,则向服务器发送上传文件请求并且开始上传文件;
步骤S03:服务器的structs2配置文件调用MyRequestParseWrapper类,使服务器不执行任何存储文件流的操作,然后将文件流请求直接转到action,action检查请求上传的文件的大小、类型、后缀名是否合法,不合法,返回错误提示;合法,action将文件流存为临时文件并将临时文件的临时存放路径保存在缓存中,接着,action将临时文件保存到服务器中与临时存放路径对应的位置上,此时,提交上传文件的客户端可以实时的根据临时存放路径获取到文件已上传的大小,进而就可以转化成进度展示;
步骤S04:对文件进行重命名,将文件统一存储为安全的后缀名文件,若上传请求的原文件名如果需要保存,则与新文件名对应保存在数据库中,供需要时获取。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410009598.0A CN103731430A (zh) | 2014-01-09 | 2014-01-09 | 一种基于struts2架构文件上传安全控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410009598.0A CN103731430A (zh) | 2014-01-09 | 2014-01-09 | 一种基于struts2架构文件上传安全控制方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103731430A true CN103731430A (zh) | 2014-04-16 |
Family
ID=50455357
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410009598.0A Pending CN103731430A (zh) | 2014-01-09 | 2014-01-09 | 一种基于struts2架构文件上传安全控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103731430A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104270403A (zh) * | 2014-09-01 | 2015-01-07 | 江苏西贝电子网络有限公司 | 基于struts2框架的云平台信息web监控系统 |
CN105160262A (zh) * | 2015-08-25 | 2015-12-16 | 浙江工业大学 | 一种基于Struts2框架和MD5加密技术的服务器上传文件命名方法 |
CN109992967A (zh) * | 2019-03-12 | 2019-07-09 | 福建拓尔通软件有限公司 | 一种在文件上传时实现自动检测文件安全性的方法及系统 |
CN111049913A (zh) * | 2019-12-17 | 2020-04-21 | 中国建设银行股份有限公司 | 数据文件的传输方法及装置、存储介质、电子设备 |
CN114844669A (zh) * | 2022-03-17 | 2022-08-02 | 中国工商银行股份有限公司 | 数据的处理方法及装置 |
CN115834567A (zh) * | 2022-11-08 | 2023-03-21 | 四川启睿克科技有限公司 | 一种vue组件的图片上传方法及系统 |
CN115834567B (zh) * | 2022-11-08 | 2024-05-31 | 四川启睿克科技有限公司 | 一种vue组件的图片上传方法及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050216555A1 (en) * | 2003-12-23 | 2005-09-29 | English Arthur V | Platform independent model-based framework for exchanging information in the justice system |
CN1728700A (zh) * | 2004-07-26 | 2006-02-01 | 中兴通讯股份有限公司 | 基于struts框架的web电信网管系统及其方法 |
US20070074169A1 (en) * | 2005-08-25 | 2007-03-29 | Fortify Software, Inc. | Apparatus and method for analyzing and supplementing a program to provide security |
CN101853189A (zh) * | 2010-05-26 | 2010-10-06 | 北京航空航天大学 | 一种基于Java的异常处理装置及其异常处理方法 |
CN102063306A (zh) * | 2011-01-06 | 2011-05-18 | 夏春秋 | 一种通过电子表单进行应用开发的技术实现方法 |
CN102111282A (zh) * | 2009-12-24 | 2011-06-29 | 上海杉达学院 | 一种基于电信业务的信息管理系统架构及其构建方法 |
US20110161936A1 (en) * | 2009-12-28 | 2011-06-30 | International Business Machines | Method and apparatus for regression testing selection for a framework-based application |
CN103067344A (zh) * | 2011-10-24 | 2013-04-24 | 国际商业机器公司 | 在云环境中自动分发安全规则的非侵入性方法和设备 |
-
2014
- 2014-01-09 CN CN201410009598.0A patent/CN103731430A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050216555A1 (en) * | 2003-12-23 | 2005-09-29 | English Arthur V | Platform independent model-based framework for exchanging information in the justice system |
CN1728700A (zh) * | 2004-07-26 | 2006-02-01 | 中兴通讯股份有限公司 | 基于struts框架的web电信网管系统及其方法 |
US20070074169A1 (en) * | 2005-08-25 | 2007-03-29 | Fortify Software, Inc. | Apparatus and method for analyzing and supplementing a program to provide security |
CN102111282A (zh) * | 2009-12-24 | 2011-06-29 | 上海杉达学院 | 一种基于电信业务的信息管理系统架构及其构建方法 |
US20110161936A1 (en) * | 2009-12-28 | 2011-06-30 | International Business Machines | Method and apparatus for regression testing selection for a framework-based application |
CN101853189A (zh) * | 2010-05-26 | 2010-10-06 | 北京航空航天大学 | 一种基于Java的异常处理装置及其异常处理方法 |
CN102063306A (zh) * | 2011-01-06 | 2011-05-18 | 夏春秋 | 一种通过电子表单进行应用开发的技术实现方法 |
CN103067344A (zh) * | 2011-10-24 | 2013-04-24 | 国际商业机器公司 | 在云环境中自动分发安全规则的非侵入性方法和设备 |
Non-Patent Citations (4)
Title |
---|
LUFENG66: "《struts2上传文件,显示进度条》", 《CSDN博客》 * |
戚艳军 ,马光思: "《基于 Struts框架实现 Web应用文件上传》", 《西安建筑科技大学学报》 * |
胡洁萍: "《在Struts2中实现文件上传的动态跟踪》", 《北京印刷学院学报》 * |
郭绍永,白东玲: "《基于 Spring 上传大附件应用系统的研究》", 《电子设计工程》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104270403A (zh) * | 2014-09-01 | 2015-01-07 | 江苏西贝电子网络有限公司 | 基于struts2框架的云平台信息web监控系统 |
CN105160262A (zh) * | 2015-08-25 | 2015-12-16 | 浙江工业大学 | 一种基于Struts2框架和MD5加密技术的服务器上传文件命名方法 |
CN109992967A (zh) * | 2019-03-12 | 2019-07-09 | 福建拓尔通软件有限公司 | 一种在文件上传时实现自动检测文件安全性的方法及系统 |
CN111049913A (zh) * | 2019-12-17 | 2020-04-21 | 中国建设银行股份有限公司 | 数据文件的传输方法及装置、存储介质、电子设备 |
CN114844669A (zh) * | 2022-03-17 | 2022-08-02 | 中国工商银行股份有限公司 | 数据的处理方法及装置 |
CN114844669B (zh) * | 2022-03-17 | 2024-01-30 | 中国工商银行股份有限公司 | 数据的处理方法及装置 |
CN115834567A (zh) * | 2022-11-08 | 2023-03-21 | 四川启睿克科技有限公司 | 一种vue组件的图片上传方法及系统 |
CN115834567B (zh) * | 2022-11-08 | 2024-05-31 | 四川启睿克科技有限公司 | 一种vue组件的图片上传方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2019041766A1 (zh) | 页面资源加载方法、装置、终端设备及介质 | |
CN103731430A (zh) | 一种基于struts2架构文件上传安全控制方法 | |
US10120672B2 (en) | Method for offline updating virtual machine images | |
US9565250B2 (en) | Data transfer service | |
US11263194B2 (en) | File block addressing for backups | |
US20190042744A1 (en) | Ransomware attack onset detection | |
CN102135892B (zh) | 应用程序运行方法、装置及系统 | |
EP4318410A3 (en) | Distributed application architectures using blockchain and distributed file systems | |
WO2018068633A1 (zh) | 一种防重打包的方法及其装置 | |
US20160259794A1 (en) | Automated Integration Of Video Evidence With Data Records | |
US10025811B2 (en) | Method and apparatus for deduplicating encrypted data | |
US20160171025A1 (en) | Method and apparatus for object storage | |
RU2013111824A (ru) | Аренда каталога | |
JP2016520931A5 (zh) | ||
CN103530535A (zh) | 一种Android平台应用程序保护的加脱壳方法 | |
JP2015518205A5 (zh) | ||
US9749295B2 (en) | Systems and methods for internet traffic analysis | |
US10671709B2 (en) | Data isolation in distributed hash chains | |
US20150193629A1 (en) | Automating the creation and maintenance of policy compliant environments | |
US9633062B1 (en) | Document fingerprints and templates | |
CN104036194A (zh) | 一种应用程序中泄露隐私数据的漏洞检测方法及装置 | |
CN108183974A (zh) | 一种智能终端应用程序的域名动态切换方法及智能终端 | |
JP2023101763A5 (zh) | ||
CN113343312A (zh) | 基于前端埋点技术的页面防篡改方法及系统 | |
CN106446138B (zh) | 数据包的存储方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140416 |