当前位置: 首页 > news >正文

【项目问题解决】% sql注入问题

目录

【项目问题解决】% sql注入问题

  • 1.问题描述
  • 2.问题原因
  • 3.解决思路
  • 4.解决方案
    • 1.前端限制传入特殊字符
    • 2.后端拦截特殊字符-正则表达式
    • 3.后端拦截特殊字符-拦截器
  • 5.总结
  • 6.参考


文章所属专区 项目问题解决


1.问题描述

在处理接口入参的一些sql注入问题,虽然通过MyBatis框架的一些特点处理了大部分sql注入问题,但还有一些是没法处理,比如这种 param LIKE CONCAT(CONCAT(‘%’,‘%’),‘%’) 这种情况,%无法预编译或者转义成%导致去数据库查询了全表。

2.问题原因

MyBatis转义失败;
前端没有现值特殊字符;
后端没有过滤特殊字符;

3.解决思路

1.前端限制禁止传入特殊字符

2.后端限制禁止传入特殊字符,例如swagger限制字符传入,但似乎只在POST请求有效

3.后端拦截特殊字符

4.解决方案

1.前端限制传入特殊字符

2.后端拦截特殊字符-正则表达式

  public static void main(String[] args) {String text = "Hello%World";boolean hasSpecialChar = text.matches(".*[%].*");if (hasSpecialChar) {System.out.println("字符串中包含特殊字符%");} else {System.out.println("字符串中不包含特殊字符%");}}

.*表示匹配0个或多个字符
[%]表示匹配字符 %

3.后端拦截特殊字符-拦截器

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;@WebFilter("/*")
public class SpecialCharacterFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// 初始化操作}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {// 获取请求参数String parameter = servletRequest.getParameter("param");// 检查参数中是否带有特殊字符 %if (parameter != null && parameter.contains("%")) {// 拦截请求servletResponse.getWriter().write("请求参数中含有特殊字符 %");return;}// 继续处理请求filterChain.doFilter(servletRequest, servletResponse);}@Overridepublic void destroy() {// 销毁操作}
}

5.总结

6.参考

给个三连吧 谢谢谢谢谢谢了
在这里插入图片描述

http://www.lryc.cn/news/264843.html

相关文章:

  • B/S医院手术麻醉临床管理系统源码 手术申请、手术安排
  • 解锁高效工作!5款优秀工时管理软件推荐
  • ICLR 2024 高分论文 | Step-Back Prompting 使大语言模型通过抽象进行推理
  • 边缘计算有哪些常用场景?TSINGSEE边缘AI视频分析技术行业解决方案
  • 配置BGP的基本示例
  • Flask解决接口跨域问题
  • 数据恢复工具推荐!这3款堪称删除文件恢复大师!
  • 论文笔记 | ICLR 2023 ReAct:通过整合推理和行动来增强语言模型
  • CSS:元素显示模式与背景
  • K8S 为什么关闭 SELinux 和交换内存
  • 7. ASP.NET Core Blazor 官网文档
  • xrandr
  • 【高效开发工具系列】eclipse部署web项目
  • 实在智能成功完成近2亿元C轮融资,全面迎接2024年Agent智能体应用元年
  • vue创建项目
  • 智能变电站集中监控辅助决策系统解决方案
  • PyQt5基础知识第三天
  • docker安装ES:7.8和Kibana:7.8
  • React 状态管理 - 优化你的应用程序
  • Python异常捕获和处理方式
  • PDF文件如何设置限制打印?
  • 互操作性(Interoperability)如何影响着机器学习的发展?
  • 从零实现一套低代码(保姆级教程) --- 【3】实现Button组件和画布区的拖拽
  • 仓储1、10、11代电子标签接口文档
  • iOS将framework转为xcframework
  • 2018年第七届数学建模国际赛小美赛C题共享单车对城市交通的影响解题全过程文档及程序
  • 【数据结构】线段树算法总结(单点修改)
  • 数据分析:小红书过节“仪式感”营销种草
  • Zookeeper-应用实战
  • 2017年第六届数学建模国际赛小美赛A题飓风与全球变暖解题全过程文档及程序