common-fileupload-1.1.1 && struts1.3.8 单个文件上传

安全漏洞修复-Common FileUpload-CVE-2016-100031 一. 漏洞描述 近日,Apache官方发布安全通告强烈建议使用Apache Struts2.3.X版本的用户对commons-fileupload组件进行升级。Struts 2.3.x默认使用1.3.2旧版本commons-fileupload组件。早在2016年,该版本组件被揭露存在反序列化漏洞,此漏洞可导致任意远程代码执行。 受影响版本: Apache Struts <= 2.3.36 Apache Common FileUpload < 1.3.3 二. 修复方式 Common FileU 阅读详情

1. JSP

  1. <%@ page contentType="text/html;charset=GBK"%>
  2. <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
  3. <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
  4. <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
  5. <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
  6. <html:html>
  7.     <head>
  8.         <title>User List Page</title>
  9.     </head>
  10.     <body bgcolor="#99ffff">
  11.         <center><br><br><br>
  12.         <logic:present name="user" scope="session">
  13.             <html:form action="user.do" method="post" enctype="multipart/form-data">
  14.                 <table border="2" bgcolor="#ffff99">
  15.                     <tr>
  16.                         <td>Upload: </td>
  17.                         <td><html:file property="upDoc" /></td>
  18.                         <td><html:text property="upDocName" /></td>
  19.                     </tr>
  20.                     <tr>
  21.                         <td colspan="3" align="center">
  22.                             <html:hidden property="status" value="upload" />
  23.                             <html:submit value="Upload" />
  24.                             <html:reset value="RESET" />
  25.                         </td>
  26.                     </tr>
  27.                 </table>
  28.             </html:form>
  29.         </logic:present>
  30.         </center>
  31.     </body>
  32. </html:html>

2. ActionForm

  1. private FormFile upDoc; //接收类型为org.apache.struts.upload.FormFile. 这个要特别关注, 因为批量上传时不能用这个类型了
  2. private String upDocName;
  3. public FormFile getUpDoc() {
  4.     return upDoc;
  5. }
  6. public void setUpDoc(FormFile upDoc) {
  7.     this.upDoc = upDoc;
  8. }
  9. public String getUpDocName() {
  10.     return upDocName;
  11. }
  12. public void setUpDocName(String upDocName) {
  13.     this.upDocName = upDocName;
  14. }

3. UploadAction

  1. public ActionForward upload(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse resp) {
  2.     userForm = (UserForm) form;
  3.     String upDocName = userForm.getUpDocName();
  4.     FormFile formFile = userForm.getUpDoc();
  5.     
  6.     OutputStream out = null;
  7.     String uploadPath = null;
  8.     
  9.     // 在编写IO流的时候必须有一个明确的绝对路径 --> this.getServlet().getServletContext().getRealPath("/")取得了当前项目的绝对路径。
  10.     /* 
  11.      * split()方法:public String[] split(String regex[, int limit]);
  12.      * eg:str.split(regex); --> 返回一个下标从0开始的数组,regex不作为任何数组元素的部分返回。
  13.      * 因为split()的参数regex是正则表达式, 所以特殊字符必须转义:
  14.      *  1、如果用"."作为分隔的话,必须是如下写法:String.split("//."),这样才能正确的分隔开,不能用String.split("."); 
  15.      *  2、如果用"|"作为分隔的话,必须是如下写法:String.split("//|"),这样才能正确的分隔开,不能用String.split("|"); 
  16.      *  3、如果用"/"作为分隔,就得写成这样:String.split("////"),因为在Java中是用"//"来表示"/"的, "."、"|"和"/"都是转义字符,必须得加"//"; 
  17.      *  4、如果在一个字符串中有多个分隔符,可以用"|"作为连字符,比如:"acount=? and uu =? or n=?",把三个都分隔出来,可以用String.split("and|or");
  18.      * limit可选,用来限制返回数组中的元素个数。
  19.      */
  20.     
  21.     if ("".equals(upDocName)) {
  22.         //不修改上传文件名时uploadPath的值
  23.         uploadPath = this.getServlet().getServletContext().getRealPath("/") + "upload//" + userForm.getUpDoc().getFileName();
  24.     } else {
  25.         uploadPath = this.getServlet().getServletContext().getRealPath("/") + "upload//" + 
  26.                         userForm.getUpDocName() + "." + userForm.getUpDoc().getFileName().split("//.")[1];
  27.     }
  28.     
  29.     try {
  30.         byte b[] = formFile.getFileData();
  31.         out = new FileOutputStream(new File(uploadPath));
  32.         out.write(b);
  33.     } catch (FileNotFoundException fnfe) {
  34.         System.err.println(this.getClass().getName() + ": upload: failed --> " + fnfe.toString());
  35.     } catch (IOException ioe) {
  36.         System.err.println(this.getClass().getName() + ": upload: failed --> " + ioe.toString());
  37.     } finally {
  38.         try {
  39.             out.close();
  40.         } catch (IOException ioe) {
  41.             System.err.println(this.getClass().getName() + ": upload - out.close() failed --> " + ioe.toString());
  42.         }
  43.     }
  44.     return mapping.findForward("upload");
  45. }
中国裁判文书网案例批量爬取 本文介绍了某法院网站数据采集的技术研究过程,主要包含JS逆向分析和数据解密方法。通过开发者工具分析发现页面数据经过加密处理,重点研究了ciphertext等加密参数的生成逻辑。文章详细记录了定位加密函数、扣取加密代码、解密数据处理的全流程,并验证了解密方法的有效性。研究过程中强调了技术使用的法律边界,明确声明仅用于合法技术研究,禁止任何非法数据爬取行为。最终实现了加密数据的成功解密,并解释了各请求参数的作用,为后续数据清洗和存储奠定了基础。 阅读详情

相关推荐

VSCode 远程开发:实现服务器图形化界面(GUI)的高效操作指南

本文详细介绍了如何通过VSCode远程开发实现服务器图形化界面(GUI)操作,包括X11转发原理、完整配置指南和实战测试。通过安装Xming、配置SSH连接和服务器端设置,开发者可以高效地在本地显示远程GUI应用,提升开发效率。

weixin_29245767的博客 292

commons-fileupload1.1版本问题上传较大文件报the request was rejected because its size is unknown,升级1.3.3版本后解决

[N]12-11 21:20:28:330[http-bio-9090-exec-3]AbstractHandlerExceptionResolver.185:Handler execution resulted in exception org.springframework.web.multipart.MultipartException: Could not parse multipart ...

baidu_38332802的博客 1059

LabVIEW内存泄漏诊断与优化:从报错到高效运行

本文深入探讨LabVIEW内存泄漏的诊断与优化方法,从理解内存泄漏本质到使用专业工具链进行问题定位,再到高频场景的解决方案和高级优化策略。通过实战案例展示如何解决工业数据采集系统中的内存不足问题,帮助开发者提升LabVIEW应用的稳定性和效率。

moon9的博客 197

Struts 1.3.10 上传文件时发生问题。1.3.8,1.2.9没有类似问题

Struts 1.3.10 近日释出,将原来应用中的 jar 包更新,结果发现上传文件时发生错误。   Hashtable fileh = form.getMultipartRequestHandler().getFileElements();  for (Enumeration e = fileh.keys(); e.hasMoreElements();) {   Strin

KimSoft's Blog 2478

CIC-IDS数据集特征介绍

###1、简介 通信安全机构(CSE)与加拿大网络安全研究所(CIC)合作项目,该项目对自1998年以来现有的11个数据集的评估表明,大多数数据集(比如经典的KDDCUP99,NSLKDD等)已经过时且不可靠。其中一些数据集缺乏流量多样性和容量,一些数据集没有涵盖各种已知的攻击,而另一些数据集将数据包有效载荷数据匿名化,这不能反映当前的趋势。有些还缺少特征集和元数据。 CIC-IDS-2017数据集包含良性和最新的常见攻击,类似真实世界数据(PCAPs)。 它的数据采集截至2017...

蓝亚之舟的博客 3万+

关于动态存储器dram中rank,bank,device之间的关系

DEVICE_WIDTH表示设备的带宽(单位bit),每个列(column)包含DEVICE_WIDTH 位(bit),每一行(row)包含NUM_COLS个column。   而每一个bank包含NUM_ROWS个行(row)。所以一个设备(device)的存储容量为PER_DEVICE_STORAGE =NUM_ROWS*NUM_COLS*DEVICE_WIDTH*NUM_BANKS (i

wyj7260的专栏 4732

Struts2下使用Common-FileUpload实现文件上传

struts2下使用commons-fileupload框架实现文件上传。

海洋之心 1万+

CloudCompare 二次开发(41)——点云重建三维凸包并计算体积

本文介绍了如何结合PCL与CloudCompare实现点云三维凸包的构建与可视化。通过代码集成,在CloudCompare界面添加功能按钮,实现点云数据转换、凸包构建、体积计算以及可视化显示。具体步骤包括:1) 在UI中添加功能按钮;2) 将点云数据转换为PCL格式;3) 使用PCL的ConvexHull算法构建三维凸包;4) 计算并显示凸包体积;5) 将结果以点云和网格形式可视化显示。最终实现了点云凸包的自动构建与体积计算功能,为点云处理提供了实用工具。

点云侠的博客 193

struts2上传文件(Common-FileUpload)

1.准备工作。 Struts2,默认使用的就是Common-FileUpload的文件上传框架,想要使用这个框架的话,需要将两个JAR文件导入到项目中,分别是:commons-io-2.4.jar和commons-fileupload-1.3.2.jar(将这两个包复制到WEB-INF\lib路径下)。 导入完所需要的JAR包之后,就可以使用该框架进行文件的上传工作。

繁城落叶 1452

车载软件架构 —— AUTOSAR Vector SIP包(三)

### 上一篇文章中介绍了AUTOSAR基础软件供应商Vector公司的开发工具链,本文将继续介绍Vector公司的AUTOSAR产品。 ### -> 1、Vector SIP包中的StartApplication ### -> 2、StartApplication如何开始使用

Soly_kun的博客 829

Prism 入门02,区域介绍

什么是区域(Region)?区域,在Prism 框架中,区域是模块化的核心的功能之一,其主要作用是降低应用程序和模块之间的耦合度。使用方式:在应用程序的界面中,划分出某块区域,并为这个区域定义一个唯一的区域名称。那么通过这个区域名称,应用程序就可以找到指定的区域。并为这个区域动态放置一些容器或控件,从而呈现在界面中。

build2024 1126

common-fileupload上传文件

使用common-fileupload上传文件比较简单,先去 http://commons.apache.org/fileupload/ 下载好相关的jar包,然后准备好上传的页面文件,主要的是一个form,如下:                            File Upload                             File Name:                            

hyman.xie的专栏 5657

【Claude】SSL certificate verification 错误:证书校验失败与自定义 CA 配置

获取并验证企业 CA 证书后,需要配置 Claude Code(Node.js)信任该证书。Claude Code 的 SSL 错误通常源于企业代理:不是 Anthropic 服务器的问题Node.js 使用独立的 CA 存储:操作系统信任了企业 CA 不等于 Node.js 也信任NODE_EXTRA_CA_CERTS 是标准解决方案:指向包含企业 CA 的 PEM 文件绝不使用 NODE_TLS_REJECT_UNAUTHORIZED=0:这等于关闭所有 HTTPS 安全验证证书链完整性很重要。

博客 6807

使用common-fileupload实现文件的上传

使用common-fileupload实现文件的上传

qq_44952589的博客 182

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Struts学习总结(五)---使用Struts2实现单个文件上传

使用Struts2实现单个文件的上传

复制乔布斯 1849

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

commons-fileupload 上传图片路径到mysql_java使用common-fileupload实现文件上传

这篇文章主要为大家详细介绍了java使用common-fileupload实现文件上传的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下文件上传是网站非常常用的功能,直接使用Servlet获取上传文件还得解析请求参数,比较麻烦,所以一般选择采用apache的开源工具,common-fileupload.这个jar包可以再apache官网上面找到,也可以在struts的lib文件夹下面找到...

weixin_39889214的博客 105

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Struts2文件上传之Servlet依赖fileupload组件实现

直接贴代码 upload.jsp username: password: file1: file2: package cn.com.baiwen.servlet; import java.io.File; import java.io.IOException; import java.util.List; import javax.servlet.ServletExc

IT_BaiWen的专栏 627

使用common-fileupload 和common-io包来实现文件上传

使用common-fileupload 和common-io包来实现文件上传

zys_1997的博客 1564

struts2实现单个文件上传

第一步  框架的选择 在struts2-core-2.1.8.1.jar包里面 按照 org.apache.struts2 查询 找到default.porperties 默认的资源文件 看到关于上传文件的信息 ### Parser to handle HTTP POST requests, encoded using the MIME-type multipart/form-data

wtljiayou的专栏 914

Struts2和common的fileupload实现文件上传并显示实时进度

Struts2和common的fileupload实现文件上传并显示实时进度 参考连接http://blog.csdn.net/z69183787/article/details/52536255 基于AJAX的文件上传显示进度条实现参考连接 form表单设置为enctype=”multipart/form-data”,提交表单时: 后端获取参数就不能通过request.getParamet

menghuanzhiming的博客 829

Struts 文件上传(UpLoad)

刚刚做了三个文件上传的Demo a.在jsp中简单利用Commons-fileupload组件实现 b.在struts1.2中实现 c.在sturts2中实现 现在把Code与大家分享一下.. 注:此为三个简单Demo,仅供练习用,并没有做太多上传限制 如有兴趣可以自行查看相关文档说明 一.在JSP环境中利用Commons-fileupload组件实现文件上传 1.页面upload.jsp清单如下...

gdf84的博客 214

Struts2中使用Common-FileUpload实现文件上传

在web应用中,文件上传似乎是很常见的,但是采用传统的方法不但复杂而且难以控制,需要写很多代码,像控制文件大小、文件类型的过滤、存放目录等等。这些复杂的问题在Struts2中已经不存在了,struts2默认使用common-fileupload实现文件的上传。在struts.properties中我们可以看到:struts.multipart.parser=Jakarta 。下面我们就以Commo

1786

jsp\struts1.2\struts2 中文件上传

刚刚做了三个文件上传的Demo a.在jsp中简单利用Commons-fileupload组件实现 b.在struts1.2中实现 c.在sturts2中实现 现在把Code与大家分享一下.. 注:此为三个简单Demo,仅供练习用,并没有做太多上传限制 如有兴趣可以自行查看相关文档说明 一.在JSP环境中利用Commons-fileupload组件实现文件上传    1.页面upload.jsp清...

yuancandy的专栏 114

java如何保存上传后的文件 (struts2与struts1)

common-fileupload是jakarta项目组开发的一个功能很强大的上传文件组件 下面先介绍上传文件到服务器(多文件上传): import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; import java.util.regex.*; impo

yinxianluo的专栏 1100

jsp/struts1.2/struts2.0文件上传小结

一.在JSP环境中利用Commons-fileupload组件实现文件上传    1.页面upload.jsp清单如下: Java代码 <a title="复制代码" onclick="function onclick(){dp.sh.Toolbar.CopyToClipboard(this);return false;}" href="#">"java" 

fpy_061625的专栏 1257
上一篇: smartupload -- api
下一篇: struts1.3.8 -- 动态Action
ForWayfarer
博客等级 码龄20年 60粉丝 96原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值