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;}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/48956.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot 整合MyBatis(超详细)

&#x1f600;前言 本篇博文关于Spring Boot 整合MyBatis&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是我的动力&#x…

R语言03-R语言中的矩阵

概念 在R语言中&#xff0c;矩阵&#xff08;Matrix&#xff09;是一个二维的数据结构&#xff0c;由行和列组成&#xff0c;其中所有元素必须具有相同的数据类型。矩阵可以用于存储数值型数据&#xff0c;常用于线性代数运算、统计计算以及数据处理等领域。 代码示例 # 创建…

从零学算法160

**160.**给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 示例 1&#xff1a; 输入&#xff1a;intersectVal 8, listA [4,1,8,4,5], listB [5,6,1,8,4,5], skipA 2, ski…

AJ-Captcha行为验证在vue中的使用

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 项目场景&#xff1a;由原先的验证码校验升级为行为验证校验 使用方法 提示&#xff1a;参考文档&#xff1a; 参考文档&#xff1a;vue使用AJ-Captcha文档 gitee地址&#xff1a;AJ-Captcha &…

FFmpeg解码32k大分辨率出现如下错误:Picture size 32768x32768 is invalid

最近找到一张32k的jpeg图片&#xff0c;尝试用ffmpeg来进行解码&#xff0c;命令如下&#xff1a; ffmpeg -i enflame_32768-32768-420.jpg 32.yuv结果出现Picture size 32768x32768 is invalid的错误&#xff1a;

uniapp-滑块验证组件wo-slider

wo-slider是一款支持高度自定义的滑块验证组件&#xff0c;采用uniapp-vue2编写 采用touchstart、touchmove、touchend事件实现的滑块组件,支持H5、微信小程序&#xff08;其他小程序未试过&#xff0c;可自行尝试&#xff09; 可到插件市场下载尝试&#xff1a; https://ext.…

Docker搭建个人网盘、私有仓库

1、使用mysql:5.6和 owncloud 镜像&#xff0c;构建一个个人网盘 [rootlocalhost ~]# docker pull mysql:5.6 [rootlocalhost ~]# docker pull owncloud [rootlocalhost ~]# docker run -itd --name mysql --env MYSQL_ROOT_PASSWORD123456 mysql:5.6 [rootlocalhost ~]# doc…

RESTful API,以及如何使用它构建 web 应用程序

RESTful API是一种基于HTTP协议的API设计风格&#xff0c;它的核心思想是将资源作为 API 的核心&#xff0c;使用 HTTP 的 GET、POST、PUT、DELETE 等方法对这些资源进行操作&#xff0c;并通过 URL 来定位资源。 RESTful API的特点包括&#xff1a; 资源是 API 的核心使用 H…

【LeetCode-经典面试150题-day12】

20.有效的括号 题意&#xff1a; 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括…

共享休闲娱乐空间:打造多元化生活方式

共享茶室&#xff1a; 共享茶室为人们提供了一个安静、放松的环境&#xff0c;让人们可以品尝不同种类的茶叶&#xff0c;并享受到与他人分享茶文化的乐趣。共享茶室通常会提供专业的泡茶设备和茶具&#xff0c;让人们可以更好地体验泡茶的过程和仪式感。这种共享空间不仅让人们…

Go的标准库Context理解

作为一个才入门的菜鸟&#xff0c;还没写过真正的 go 项目&#xff0c;要理解这个 Context 还是有点难&#xff0c;不过还是要尝试一下。在 Go http包的Server中&#xff0c;每一个请求在都有一个对应的 goroutine 去处理。请求处理函数通常会启动额外的 goroutine 用来访问后端…

会计术语英汉对照表 (包括术语详细介绍) | 会计英语

对账&#xff08;checking&#xff09; 对应账户&#xff08;corresponding accounts&#xff09; 定期清查&#xff08;Periodic ckecking method&#xff09; 定期盘存制&#xff08;periodic inventory system&#xff09; 订本式账簿&#xff08;bound book&#x…

【微服务】微服务调用原理及服务治理

本文通过图文结合&#xff0c;简要讲述微服务的调用原理&#xff0c;以及服务治理的相关概念。 1.微服务的调用原理 举个栗子&#xff1a;你去会所洗脚。首先&#xff0c;技师肯定要先去会所应聘&#xff0c;通过之后&#xff0c;会所会记录该技师的信息和技能&#xff0c;然后…

PHP反序列化 字符串逃逸

前言 最近在打西电的新生赛&#xff0c;有道反序列化的题卡了很久&#xff0c;今天在NSS上刷题的时候突然想到做法&#xff0c;就是利用字符串逃逸去改变题目锁死的值&#xff0c;从而实现绕过 为了研究反序列化的字符串逃逸 我们先简单的测试下 原理 <?php class escape…

带你了解SpringBoot---开启Durid 监控

文章目录 数据库操作--开启Durid 监控整合Druid 到Spring-Boot官方文档基本介绍Durid 基本使用代码实现 Durid 监控功能-SQL 监控需求:SQL 监控数据SQL 监控数据-测试页面 Durid 监控功能-Web 关联监控需求:Web 关联监控配置-Web 应用、URI 监控重启项目 Durid 监控功能-SQL 防…

SOA通信中间件常用的通信协议

摘要&#xff1a; SOA&#xff08;面向服务的架构&#xff09;的软件设计原则之一是模块化。 前言 SOA&#xff08;面向服务的架构&#xff09;的软件设计原则之一是模块化。模块化可以提高软件系统的可维护性和代码重用性&#xff0c;并且能够隔离故障。举例来说&#xff0c;…

【解决方案】VS Code无法导入自定义包

【解决方案】VS Code无法导入自定义包 解决方案&#xff1a; 在项目根目录新建import_func.py&#xff0c;并输入一下内容&#xff1a; import os import re import sys def import_all():sys_file []wd os.getcwd()sys_file.append(wd)for root, dirs, files in os.walk(w…

大语言模型微调实践——LoRA 微调细节

1. 引言 近年来人工智能领域不断进步&#xff0c;大语言模型的崛起引领了自然语言处理的革命。这些参数量巨大的预训练模型&#xff0c;凭借其在大规模数据上学习到的丰富语言表示&#xff0c;为我们带来了前所未有的文本理解和生成能力。然而&#xff0c;要使这些通用模型在特…

ubuntu修改默认文件权限umask

最近在使用ubuntu的过程中发现一个问题&#xff1a; 环境是AWS EC2&#xff0c;登录用户ubuntu&#xff0c;系统默认的umask是027&#xff0c;修改/etc/profile文件中umask 027为022后&#xff0c;发现从ubuntu用户sudo su过去root用户登录查询到的umask还是027&#xff0c;而…

LeetCode 面试题 01.07. 旋转矩阵

文章目录 一、题目二、C# 题解 一、题目 给你一幅由 N N 矩阵表示的图像&#xff0c;其中每个像素的大小为 4 字节。请你设计一种算法&#xff0c;将图像旋转 90 度。 不占用额外内存空间能否做到&#xff1f; 点击此处跳转题目。 示例 1: 给定 matrix [ [1,2,3], [4,5,6], …