springMVC Unix 文件参数变更漏洞修复
错误信息如下:




解决方案:
原因:未对用户输入正确执行危险字符清理
未检查用户输入中是否包含“…”(两个点)字符串,比如 url 为 /login?action=…/webapps/RTJEKSWTN26635&type=randomCode
cookie为Cookie: JSESSIONID=…/webapps/RTJEKSWTN26241;
测试返回为200
解决办法:通过建立过滤器方法,增加对所有用户输入信息中是否包含“..”(两个点)字符串进行清理过滤。
使用AppScan扫描之后可以通过这样的方式进行指定问题手动测试
使用过滤器过滤参数以及cookie中的…/
web.xml 配置拦截器
<filter><filter-name>InjectFilter</filter-name><filter-class>com.fh.filter.InjectFilter</filter-class></filter>
创建拦截器
package com.fh.filter;import com.alibaba.fastjson.JSON;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class InjectFilter implements Filter {private static Logger log = LoggerFactory.getLogger(InjectFilter.class);private static final String REG_EXP = "\\.\\./";@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}public void doFilter(ServletRequest request, ServletResponse response,FilterChain filterchain) throws IOException, ServletException {//判断是否有注入攻击字符HttpServletRequest req = (HttpServletRequest) request;boolean flag = injectInput(req, response);if (!flag) {return;} else {filterchain.doFilter(request, response);}}@Overridepublic void destroy() {}/*** 判断request中是否含有注入攻击字符** @param request* @return*/public boolean injectInput(ServletRequest request, ServletResponse response) throws IOException {Enumeration e = request.getParameterNames();String attributeName;String attributeValues[];HttpServletRequest req = (HttpServletRequest) request;String cookie = req.getHeader("Cookie");if (!isSpecialChar(cookie, response)){return false;}while (e.hasMoreElements()) {attributeName = (String) e.nextElement();//不对密码信息进行过滤,一般密码中可以包含特殊字符if (attributeName.equals("username") || attributeName.equals("password")) {continue;}attributeValues = request.getParameterValues(attributeName);for (int i = 0; i < attributeValues.length; i++) {if (attributeValues[i] == null || attributeValues[i].equals(""))continue;boolean flag = isSpecialChar(attributeValues[i], response);if (!flag){return flag;}}}return true;}/*** 判断字符串中是否含有注入攻击字符*/private boolean isSpecialChar(String value, ServletResponse servletResponse) throws IOException {Pattern pattern = Pattern.compile(REG_EXP);if (value == null) {return true;}Matcher matcher = pattern.matcher(value);if (matcher.find()) {log.info("入参中有非法字符: " + value);HttpServletResponse response = (HttpServletResponse) servletResponse;Map<String, Object> responseMap = new HashMap<>();// 匹配到非法字符,立即返回responseMap.put("code", 500);responseMap.put("msg", "入参中有非法字符");response.setContentType("application/json;charset=UTF-8");response.setStatus(HttpStatus.OK.value());PrintWriter writer = response.getWriter();writer.write(JSON.toJSONString(responseMap));writer.flush();writer.close();return false;}return true;}
}
相关文章:
springMVC Unix 文件参数变更漏洞修复
错误信息如下: 解决方案: 原因:未对用户输入正确执行危险字符清理 未检查用户输入中是否包含“…”(两个点)字符串,比如 url 为 /login?action…/webapps/RTJEKSWTN26635&typerandomCode cookie为Coo…...
【LeetCode】494.目标和
题目 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums [2, 1] ,可以在 2 之前添加 ,在 1 之前添加 - &#x…...
KaiwuDB 荣获哈佛商业评论 2023“高能韧性团队奖”
8月18日,《哈佛商业评论》中文版携手 FESCO 成功举办“第九届人才经济论坛”暨“2022-2023 高能团队奖颁奖典礼”。论坛秉承前沿的全球视野及权威的管理理念,发掘并展示本土企业组织管理的最佳实践,并重磅揭晓第二届“高能团队奖”评选结果。…...
删除ubuntu开始菜单中的图标
背景 本来是很好看干净的界面 更新谷歌浏览器后出现了Gmail,幻灯片,谷歌硬盘等跟谷歌相关的乱七八糟东西搞得界面就很丑 解决问题 删掉那个图标 输入命令 sudo nautilus /usr/share/applicationssudo nautilus ~/.local/share/applications可以…...
信息系统项目管理基础知识学习笔记 - IT 治理基础 - IT治理的驱动因素
信息系统项目管理基础知识学习笔记 - IT 治理基础 - IT治理的驱动因素 IT治理的驱动因素组织的IT战略驱动组织开展高质量IT治理因素IT治理的内涵IT 治理体系信息系统项目管理基础知识学习笔记 - IT 治理基础 - IT治理的驱动因素 IT治理的驱动因素 组织信息系统建设和运行需要…...
8月21-22日上课内容 第一章 MySQL数据库初始
本章结构 数据库的基本概念 概述(总览) 结构: 数据 表 数据库 数据库管理系统 数据库系统原理 数据 (Data) 描述事物的符号记录 包括数字,文字、图形、图像、声音、档案记录等以“记录”形式按统一的格式进行存储表 将不同…...
等级查询发布助手
考试成绩的发布是学校教学工作中的一项重要任务,传统的手工录入、统计和发布成绩的方式既耗时又容易出错。为了提高老师的工作效率和准确性,推荐老师们试一试易查分考试等级发布系统。 易查分是一个查询/发布发布平台 1. 快速高效:老师只需将…...
手搭手入门MyBatis-Plus
MyBatis-Plus Mybatis-Plus介绍 为简化开发而生 MyBatis-Plus(opens new window)(简称 MP)是一个 MyBatis(opens new window) 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 特性 无侵入&#…...
AI 绘画Stable Diffusion 研究(十一)sd图生图功能详解-美女换装
免责声明: 本案例所用安装包免费提供,无任何盈利目的。 大家好,我是风雨无阻。 为了让大家更直观的了解图生图功能,明白图生图功能到底是干嘛的,能做什么事情?今天我们继续介绍图生图的实用案例-美女换装的制作。 对于…...
Servlet+JDBC实战开发书店项目讲解第14讲:订单管理功能
ServletJDBC实战开发书店项目讲解第14讲:订单管理功能 欢迎阅读本系列教程的第14讲!在本篇文章中,我们将深入讲解如何在书店项目中实现订单管理功能。通过这个实例,你将学习到如何使用Servlet和JDBC来处理后台管理的订单管理操作…...
基于Linux操作系统中的shell脚本
目录 前言 一、概述 1、什么是shell? 2、shell脚本的用途有哪些? 3、常见的shell有哪些? 4、学习shell应该从哪几个方面入手? 4.1、表达式 1)变量 2)运算符 4.2、语句 1)条件语句&am…...
8.22笔记
8.22笔记 8.22笔记一、Hive的HQL语法重点问题1.1 DDL1.1.1 Hive中数据表的分类问题1.1.2 特殊的数据类型 1.2 DML1.3 DQL1.3.1 查询语法和MySQL大部分都是一致的 1.4 讲了三个数据库的可视化工具1.4.1 navicat1.4.2 dbeaver1.4.3 chat2db 二、Hive中重点问题:Hive函…...
【以太网通信】RS232 串口转以太网
最近和 RK 研发同事在调试通信接口,排查与定位 RK3399 接收数据出错的问题。FPGA 与 RK3399 之间使用一路 RS232 串口进行通信,由于串口数据没有分包,不方便排查问题,想到可以开发一个 RS232 串口转以太网的工具,将串口…...
分享两道Java面试的算法上机题目(后续会持续补充更多)
所有题目参考答案均是小编自己想法,仅供参考,解法很多,大可不必局限,有更优解的大神无解,可评论或私聊博主指正! 题目1 找大串,给定一个字符串其中包含任意组连续字符,我们把超过3个…...
如何使用CSS实现一个平滑过渡效果?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用CSS实现平滑过渡效果⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚…...
网络常见设备
目录 1.网络常见设备 1.交换路由设备 2.网络安全设备 3.无线网络设备 4.网络设备生产厂商 1.网络常见设备 当用户通过电子邮件给远方的朋友送去祝福时,一定不会想到这封邮件在网络中将会经历怎样复杂的行程。就好比将一封真实的信件投到邮局后,无法了解…...
数据结构与算法:通往编程高地的必修课(文末送书)
🤵♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞Ǵ…...
python小脚本——批量将PDF文件转换成图片
语言:python 3 用法:选择PDF文件所在的目录,点击 确定 后,自动将该目录下的所有PDF转换成单个图片,图片名称为: pdf文件名.page_序号.jpg 如运行中报错,需要自行根据报错内容按照缺失的库 例如&#x…...
cUrl的介绍和基本使用
cURL 如果你在开发接口的时候,需要调试。那么cUrl将是你必备的技能。也许你用过postman,但这个未免太重量级了。curl将会是你最佳轻量级,调试接口的工具😀 1.Curl函数的基本选项✨ 1.1 --request和 -x —request 和 -X 指定与HTTP服务器通信…...
ONLYOFFICE协作空间服务器如何一键安装自托管私有化部署
ONLYOFFICE协作空间服务器如何一键安装自托管私有化部署 如何在 Ubuntu 上部署 ONLYOFFICE 协作空间社区版?https://blog.csdn.net/m0_68274698/article/details/132069372?ops_request_misc&request_id&biz_id102&utm_termonlyoffice%20%E5%8D%8F%E4…...
告别手动Dockerfile!io.fabric8插件如何用Maven配置自动生成镜像(附Spring Boot实战)
告别手动Dockerfile!io.fabric8插件如何用Maven配置自动生成镜像(附Spring Boot实战) 在Java生态中,容器化部署已成为现代应用交付的标准方式。传统做法要求开发者同时维护Dockerfile和构建脚本,这种割裂的配置方式不仅…...
HunyuanVideo-Foley入门指南:infer.py命令行参数全量说明与组合技巧
HunyuanVideo-Foley入门指南:infer.py命令行参数全量说明与组合技巧 1. 环境准备与快速部署 HunyuanVideo-Foley是一款强大的视频与音效生成工具,基于RTX 4090D 24GB显存和CUDA 12.4深度优化。在开始使用前,请确保您的硬件配置满足以下要求…...
OpenClaw 实战:3 分钟打造一个真正能「干活」的 AI 员工
OpenClaw 实战:3 分钟打造一个真正能「干活」的 AI 员工 市面上关于 OpenClaw 入门的文章一抓一大把,但真正能落地应用的实践却少之又少。经过半个多月的深度测试,我从搜索精度到人格配置进行了全量跑测,整理出这份让 Agent 真正…...
2026电商客服外包TOP5实力品牌详细解读
进入2026年,电商行业已从粗放式扩张转向精细化运营时代,客户服务不再局限于简单的问答回复,而是成为驱动店铺销售增长、积累品牌声誉的关键要素。根据最新行业研究报告,专业的外包客服团队能够帮助店铺将询单转化率提高20%-30%&am…...
避坑指南:Unity物体闪烁效果Material内存泄漏问题排查(附Shader优化方案)
Unity物体闪烁效果的性能陷阱与工业级解决方案 在游戏开发中,物体闪烁效果是一种常见的视觉反馈手段,用于提示玩家可交互对象、危险区域或特殊状态。然而,许多开发者在使用传统实现方式时,往往会掉入Material内存泄漏的陷阱&#…...
3个高效学习技巧:如何用JiYuTrainer实现课堂学习体验优化
3个高效学习技巧:如何用JiYuTrainer实现课堂学习体验优化 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 问题场景:当数字化教学遇上学习需求冲突 "…...
树莓派4b(armv8) 64位系统源码编译onnx实战指南
1. 环境准备:从零搭建树莓派4B开发环境 在树莓派4B上编译ONNX源码之前,我们需要先确保系统环境配置正确。我用的是一台4GB内存版本的树莓派4B,系统是最新的Raspberry Pi OS 64位版本。这里有个小细节要注意:很多教程还在用32位系统…...
科研绘图没美术功底?只需这一招
相信很多科研同仁都有过这样的痛点:明明实验数据很漂亮,创新点也足够突出,却因为一张制作粗糙、配色杂乱的插图,让论文的整体质量大打折扣。甚至在一些高水平期刊的审稿过程中,精美的图像往往能给审稿人留下更好的第一…...
ViGEmBus虚拟手柄驱动:Windows系统控制器仿真解决方案与开发者指南
ViGEmBus虚拟手柄驱动:Windows系统控制器仿真解决方案与开发者指南 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 核心价值解析:重新…...
长期跳健身操,颈椎会过度屈伸损伤吗
健身爱好者长期跳健身操、跟随节奏做颈部屈伸动作,是运动核心场景,却不知长期如此会让颈 “过度屈伸”,积累屈伸与爆发发力复合损伤。健身操中部分动作要求颈部快速屈伸、左右摆动,爆发性发力导致颈部肌肉与韧带承受瞬间张力&…...
