针对 % 号 | 引起的 不安全情况

 把网站开放的课程都检索下来了

 

一、情况1

org.apache.tomcat.util.http.Parameters processParameters 信息: Character decoding failed. Parameter [Mac] with value [%%%] has been ignored. Note that the name and value quoted here may be corrupted due to the failed decoding. Use debug level logging to see the original, non-corrupted values. Note: further occurrences of Parameter errors will be logged at DEBUG level.

二、解释

Tomcat 在处理请求参数时遇到了字符解码失败的情况。具体来说,它发现了一个名为 "Mac" 的参数,其值为 "%%%",但是由于解码失败,它将该参数忽略了。

这种情况通常发生在客户端发送的请求参数值包含了不正确的编码字符时。在 HTTP 请求中,参数值应该是经过 URL 编码的,以确保传输过程中不会出现问题。URL 编码会将一些特殊字符转换成 % 加上对应的 ASCII 值的十六进制表示,以确保它们能够被安全地传输和解析。

在这个错误信息中,参数值为 "%%%",这可能是因为客户端在发送请求时出现了错误,导致了参数值被错误地编码了多次。

解决这个问题的方法是确保客户端发送的请求是正确的,参数值经过了正确的编码。你可能需要检查发送请求的代码,确保参数值在发送之前被正确地 URL 编码了。另外,还可以查看客户端发送请求时是否存在其他的错误或异常情况。

三、情况2

在 SQL 查询中,百分号(%)通常用作通配符,用于模糊匹配。当你在查询语句中使用 % 时,它会匹配任意数量(包括零个)的字符。这在查询时可以非常有用,特别是在需要进行模糊搜索或匹配的情况下。

例如,在使用 LIKE 关键字进行模糊搜索时,你可以使用 % 来匹配任意字符。例如:

SELECT * FROM users WHERE username LIKE 'joh%';

四、解释

恶意用户可能会利用这种通配符来执行 SQL 注入攻击,因此在构建 SQL 查询时,确保对用户输入进行正确的处理和过滤是非常重要的。

五、解决办法

当涉及到从前端向后端传递数据时,需要确保对用户输入进行适当的过滤和验证,以防止潜在的安全风险,比如 SQL 注入、跨站脚本攻击(XSS)等。以下是前端 JavaScript 和后端过滤器的一些方法:

5.1 前端

前端 JavaScript 过滤和验证:

1.输入验证:在前端,使用 JavaScript 对用户输入进行验证。可以使用正则表达式或者内置的验证函数,确保输入符合预期的格式和要求。

function validateInput(input) {// 使用正则表达式验证输入const regex = /^[a-zA-Z0-9_]+$/; // 例如,只允许字母、数字和下划线return regex.test(input);
}

2.编码用户输入:在向后端发送数据之前,对用户输入进行编码,以确保特殊字符不会被解释为代码或指令。

const userInput = document.getElementById('userInput').value;
const encodedInput = encodeURIComponent(userInput);

5.2 后端

后端过滤器/验证器:

  1. 输入过滤:在后端,使用过滤器或验证器来处理接收到的用户输入数据。这可以是基于框架的过滤器、自定义的验证函数等。
    public boolean isValidInput(String input) {// 实现输入验证逻辑,例如检查输入是否符合预期格式// 如果不符合,返回 false;否则返回 true
    }

六、其他办法

在 Spring Boot 和 MyBatis 框架中,可以使用拦截器(Interceptor)或者过滤器(Filter)来过滤请求参数。同时,确实,在数据库查询时使用分页可以有效地减少一次性加载大量数据的风险。

分页查询:

在使用 MyBatis 进行数据库查询时,可以使用其提供的分页插件来实现分页功能,比如 MyBatis 分页助手(MyBatis PageHelper)。

1.引入 PageHelper 依赖:在 Maven 或 Gradle 中引入 MyBatis 分页插件的依赖。

2.配置分页插件:在 MyBatis 的配置文件(通常是 application.ymlapplication.properties)中配置分页插件。

mybatis:

        plugin:

                pagehelper:

                        helperDialect: mysql

                        reasonable: true

                        supportMethodsArguments: true

 

 

3.在查询方法中使用分页:在需要分页查询的方法中,调用 PageHelper 的静态方法来设置分页参数。

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;@Service
public class UserService {@Autowiredprivate UserMapper userMapper;public List<User> getUsers(int pageNum, int pageSize) {PageHelper.startPage(pageNum, pageSize);return userMapper.getUsers();}
}

过滤请求参数:

使用拦截器(Interceptor):
  1. 创建拦截器类:创建一个拦截器类,实现 HandlerInterceptor 接口,重写 preHandle 方法,在该方法中对请求参数进行过滤或验证。
  2. 注册拦截器:在 Spring Boot 应用程序中注册拦截器,以便它能够拦截到相应的请求。
使用过滤器(Filter):
  1. 创建过滤器类:创建一个过滤器类,实现 javax.servlet.Filter 接口,重写 doFilter 方法,在该方法中对请求参数进行过滤或验证。
  2. 配置过滤器:在 Spring Boot 应用程序中,可以通过 @Component 或者 @Configuration 注解来声明并配置过滤器。

 

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【北京迅为】《iTOP-3588从零搭建ubuntu环境手册》-第4章 Ubuntu20.04支持中文

RK3588是一款低功耗、高性能的处理器&#xff0c;适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用&#xff0c;RK3588支持8K视频编解码&#xff0c;内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

电商购物系统商品数据结构设置

电商购物系统商品数据结构设置 如上图所示 , 该表为商品表关系的示意图 , 气质我们要溥仪一个电视购物系统要用到的知识那就是SPU和SKU 简单来说这两种就是不同的分类方式 , 我们在浏览淘宝等页面的时候也会遇见相同的情况如我们可以进行品牌的筛选 , 也可以进行商品价格的筛选…

C# WinForm —— 13 ComboBox下拉框/组合框介绍

1. 简介 ComboBox 是由 textBox 和 listBox 组合而成的&#xff0c;只能选择一项&#xff0c;不能选择多项&#xff0c;其他功能和 listBox类似 ComboBox 下拉框的三种样式&#xff1a;&#xff08;通过 DropDownStyle属性 设置&#xff09; Simple: 最简单的样式&#xff0c…

YOLO系列笔记(十四)——Compute Canada计算平台及其常见命令介绍

Compute Canada平台及其常见命令介绍 前言优势使用方法1. 检查模块不带版本号带版本号 2. 加载模块3. 检查模块是否加载成功4. 创建虚拟环境5. 编写作业脚本6. 提交作业7. 监控作业状态8. 查看作业开始预计时间9. 查看作业的详细输出10. 取消作业 注意结语 前言 大家好&#x…

QML 本地存储(Setting,sqlite)

Qt hello - 专注于Qt的技术分享平台 QML 原生的储存方有两种&#xff1a; 1&#xff0c;Settings 跟QWidget 中的QSettings 一样&#xff0c;可以简单的存储一些配置。 2&#xff0c;Sqlite sqlite数据库。可以存储一些复杂的数据。 一&#xff0c;Settings 我们以一个按钮的位…

揭秘微服务架构:十大设计模式助力企业数字化转型

微服务架构中10个常用的设计模式 微服务是一种架构风格&#xff0c;它将一个复杂的应用拆分成多个独立自治的服务&#xff0c;每个服务负责应用程序中的一小部分功能。这些服务通过定义良好的API进行通信&#xff0c;通常是HTTP RESTful API或事件流。微服务架构的主要特点包括…

【SpringSecurity源码】过滤器链加载流程

theme: smartblue highlight: a11y-dark 一、前言及准备 1.1 SpringSecurity过滤器链简单介绍 在Spring Security中&#xff0c;过滤器链&#xff08;Filter Chain&#xff09;是由多个过滤器&#xff08;Filter&#xff09;组成的&#xff0c;这些过滤器按照一定的顺序对进…

工作中使用Optional处理空指针异常

工作中使用Optional处理空指针异常 实体类以前对空指针的判断Optional处理空指针测试结果 实体类 package po;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.io.Serializable;Data AllArgsConstructor NoArgsConstruct…

某大型集团SAP数字化转型方案(95页PPT)

一、资料介绍 《某大型集团SAP数字化转型方案》是一份详尽的95页PPT资料&#xff0c;旨在为某大型集团提供一套全面而深入的SAP数字化转型方案。该方案紧密结合了集团的业务特点和发展需求&#xff0c;以SAP系统为核心&#xff0c;通过数字化技术的运用&#xff0c;实现业务流…

图片格式不对怎么转换?推荐几个图片转换的高效处理方法

在日常使用电脑或处理图片的过程中&#xff0c;我们经常会遇到图片格式不兼容的问题&#xff0c;例如&#xff0c;我们可能收到了一个无法打开的图片文件&#xff0c;或者想将图片转换为其他格式以便在不同的应用程序中使用&#xff0c;这时候就需要将图片转格式&#xff0c;所…

智慧公厕解决了什么问题?

在现代城市生活中&#xff0c;公厕是一个不可忽视的环节。然而&#xff0c;过去的公共厕所常常存在管理不力、环境脏乱差等问题&#xff0c;给人们的生活带来了许多不便和困扰。为了解决这些问题&#xff0c;智慧公厕应运而生&#xff0c;成为了公共厕所使用、运行、管理、养护…

无线收发模块家电控制实验

zkhengyang可申请加入数字音频系统研究开发交流答疑群(课题组) 当然可以先用固定电平发送&#xff0c;可以实现&#xff0c;0/1数据发送&#xff0c;接收。 可以使用51单片机来编码码&#xff0c;解码&#xff0c;或者任何MCU或者SOC&#xff0c;DSP&#xff0c;FPGA。 注意G…

WebSocket基础知识

WebSocket是什么&#xff1f; WebSocket 是一种网络通信协议&#xff0c;它提供了全双工通信机制&#xff0c;允许服务器主动向客户端发送消息&#xff0c;而不仅限于响应客户端的请求。它使用类似于 HTTP 的握手来建立连接&#xff0c;然后使用单独的持久连接来进行通信。这种…

电视剧推荐

1、《春色寄情人》 2、《唐朝诡事录》 3、《南来北往》 4、《与凤行》 5、《利剑玫瑰》 6、《承欢记》

使用nmcli命令在Linux系统上配置各种网络(有线、无线、vlan、vxlan、路由、网桥等)

前言&#xff1a;原文在我的博客网站中&#xff0c;持续更新数通、系统方面的知识&#xff0c;欢迎来访&#xff01; 使用nmcli命令在Linux系统上配置各种网络&#xff08;有线、无线、vlan、vxlan、路由、网桥等&#xff09;https://myweb.myskillstree.cn/123.html 你是否会…

护眼台灯和普通台灯差别很大吗?专业护眼灯品牌有哪些?

随着科技的不断演进&#xff0c;台灯的设计也日益脱胎换骨&#xff0c;从曾经的笨重造型转变为如今轻盈雅致的外观。它们的功能同样经历了多样化的革新&#xff0c;变得更加人性化和便捷。作为学习、阅读和办公环境中不可或缺的照明工具&#xff0c;台灯所提供的光线舒适度至关…

ChatGLM 本地部署指南(问题解决)

硬件要求&#xff08;模型推理&#xff09;&#xff1a; INT4 &#xff1a; RTX3090*1&#xff0c;显存24GB&#xff0c;内存32GB&#xff0c;系统盘200GB 如果你没有 GPU 硬件的话&#xff0c;也可以在 CPU 上进行推理&#xff0c;但是推理速度会更慢。 模型微调硬件要求更高。…

【ArcGISProSDK】condition属性

示例 通过caption属性可以看出esri_mapping_openProjectCondition的条件是一个工程被打开 condition的作用 由此可知示例中的Tab实在工程被打开才能使用&#xff0c;否则他禁用显示灰色&#xff0c;在未禁用的时候说明条件满足。 参考文档 insertCondition 元素 (arcgis.com…

擦边宣传、质量堪忧、销量惨淡,创维汽车将何去何从?

文/张诗雨 近日&#xff0c;据多家媒体报道&#xff0c;创维汽车创始人黄宏生在公开场合发言称&#xff0c;创维汽车有助于养生&#xff0c;他在创维汽车里午休&#xff0c;高血压没吃药都恢复正常了。该言论引起网友热议。 针对此事件&#xff0c;5月9日&#xff0c;创维汽车…

Java数组(二)

Java数组&#xff08;二&#xff09; 1、多维数组 多维数组可以看成是数组的数组&#xff0c;比如二维数组就是一个特殊的一维数组&#xff0c;其每一个元素都是一个一维数组。二维数组 int a[][] new int[2][5];解析&#xff1a;以上二维数组a可以看成一个两行五列的数组。…