mybatis-plus实现非法sql拦截(防止全表更新与删除)

news2025/1/12 6:17:11

文章目录

  • 什么是非法sql:
  • 拦截的意义是:
  • 使用:
    • 1、在pom文件中添加依赖
    • 2、注入MybatisPlusInterceptor类,并配置BlockAttackInnerInterceptor拦截器
  • 测试:

什么是非法sql:

不带where子句的delete和update,在生产环境中是不允许的。因为不带where子句的delete和update将会影响全表数据。这是非常可怕的!!

拦截的意义是:

就是阻止恶意的全表更新或删除

使用:

如果项目中还没添加mybatis-plus依赖:

		<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.1.0</version>
        </dependency>

1、在pom文件中添加依赖

<!--  MP防全表更新与删除插件      -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-extension</artifactId>
            <version>3.5.1</version>
        </dependency>

2、注入MybatisPlusInterceptor类,并配置BlockAttackInnerInterceptor拦截器

@Configuration
public class MybatisPlusConfig {
  @Bean
  public MybatisPlusInterceptor mybatisPlusInterceptor() {
    MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
    interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
    return interceptor;
  }
}

测试:

数据库t_user表
在这里插入图片描述
实体类:

@TableName("t_user")
@Data
public class UserPO implements Serializable {

    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    private String userName;

    private String password;

    private String nickName;

    private int delFlag;


}

UserPOMapper:

@Mapper
public interface UserPOMapper extends BaseMapper<UserPO> {
}

IUserService:

public interface IUserService extends IService<UserPO> {
}

IUserServiceImpl:

@Service
public class IUserServiceImpl extends ServiceImpl<UserPOMapper, UserPO> implements IUserService {

}

Test:


	@Autowired
    private IUserService iUserService;
    
    @Test
    public void extension(){
        UserPO userPO = new UserPO();
        userPO.setUserName("yuan5");
        userPO.setPassword("123456");
        userPO.setNickName("bruce5");

        /**
         + SQL:UPDATE user  SET user_name=?,password=?,nick_name=?;
         */
        boolean b = iUserService.saveOrUpdate(userPO, null);
        System.out.println(b);
    }

**执行上面的测试方法,将抛出如下错误信息: **

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error updating database.  Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Prohibition of table update operation
### The error may exist in com/example/demo/mapper/UserPOMapper.java (best guess)
### The error may involve com.example.demo.mapper.UserPOMapper.update
### The error occurred while executing an update
### Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Prohibition of table update operation

上面的错误信息中,“Prohibition of table update operation” 禁止全表更新操作,这样就能阻止全表更新和删除操作。

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

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

相关文章

C++反向迭代器

C反向迭代器 &#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;C &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客主要内容介绍反向迭代器的概念和模拟实现一个通用的反向…

HTB-Escape

HTB-Escape 信息收集立足sql_svc -> RyanRyan -> Administrator扩展NTLM简单介绍 信息收集 可以从中获取两个域名。 看看 rpc服务是否有可以收集的信息。 看看samba。 rpc的Public共享文件有一个关于SQL Server的pdf。 阅读它&#xff01; 从中能得到几个用户名…

unix环境高级编程 第一章 UNIX基础知识 Go实现代码

ls命令的Go语言实现 package mainimport ("fmt""os" )func main() {if len(os.Args) ! 2 {panic("参数数量不足")}targetPath : os.Args[1]if dirList, err : os.ReadDir(targetPath); err nil {for _, dirInfo : range dirList {fmt.Println(…

SpringBoot集成ElasticSearch

文章目录 前言一、ElasticSearch本地环境搭建二、SpringBoot整合ElasticSearch1.pom中引入ES依赖2.application.yaml配置elasticsearch3.ElasticSearchClientConnect连接ES客户端工具类4.ElasticSearchResult封装响应结果5.Person实体类6.Person实体类7.ElasticsearchControlle…

OS之磁盘调度算法

目录 一、先来先服务(FCFS) 基本思想 案例 二、最短寻道时间优先(SSTF) 基本思想 案例 饥饿现象 三、扫描算法(SCAN) 基本思想 案例 四、循环扫描算法(CSCAN) 基本思想 案例 一、先来先服务(FCFS) 基本思想 根据进程请求访问磁盘的先后次序来进行调度 案例 二、…

数据结构与算法04:队列

目录 什么是队列&#xff1f; 循环队列 双端队列 阻塞队列 队列的应用场景 每日一练 什么是队列&#xff1f; 在 上一篇文章 中讲述了栈&#xff1a;先进后出就是栈&#xff0c;队列刚好相反&#xff0c;先进先出的数据结构就是队列&#xff0c;还是拿纸箱子来举例&…

《数据库应用系统实践》------ 校友会信息系统

系列文章 《数据库应用系统实践》------ 校友会信息系统 文章目录 系列文章一、需求分析1、系统背景2、 系统功能结构&#xff08;需包含功能结构框图和模块说明&#xff09;3&#xff0e;系统功能简介 二、概念模型设计1&#xff0e;基本要素&#xff08;符号介绍说明&#x…

DJ6-6/7 文件共享和访问控制、文件保护

目录 6.6 文件共享和访问控制 1、同时存取 2、存取权限 3、文件共享的实现 6.6.1 基于索引结点的共享方式 1、基本思想 2、具体操作 6.6.2 利用符号链接实现文件共享 6.6.3 利用 URL 实现文件共享 6.7 文件保护 6.6 文件共享和访问控制 文件共享的有效控制涉及…

腾讯云服务器可用区是什么?怎么选择随机吗?

腾讯云服务器可用区什么意思&#xff1f;可用区&#xff08;Zone&#xff09;是指腾讯云在同一地域内电力和网络互相独立的物理数据中心&#xff0c;一个可用区故障不会影响另一个可用区的正常运行&#xff0c;所以可用区用于构建高容灾、高可靠性应用。腾讯云服务器网来详细说…

如何在华为OD机试中获得满分?Java实现【截取字符串】一文详解!

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: Java华为OD机试真题&#xff08;2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

PCA主成分分析 | 机器学习

1、概述(Principal componet analysis,PCA) 是一种无监督学习方法&#xff0c;是为了降低特征的维度。将原始高维数据转化为低维度的数据&#xff0c;高维数据指的是数据的特征维度较多&#xff0c;找到一个坐标系&#xff0c;使得这些数据特征映射到一个二维或三维的坐标系中…

Python爬虫教程:如何爬取教育漏洞报告平台中的漏洞报告?

部分数据来源:ChatGPT 引用 在本教程中,我们将使用 Python 语言和 requests、lxml 库来分析和爬取教育漏洞报告平台的数据。 1. 爬取网站数据 首先,我们需要从教育漏洞报告平台上获取需要的数据。我们可以通过 requests 库向特定网址发送请求,获取响应内容。 import req…

路径规划算法:基于布谷鸟优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于布谷鸟优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于布谷鸟优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法…

数字信号的基本运算——线性卷积(相关)和圆周卷积(相关)

简介 在介绍卷积和相关运算之前&#xff0c;需要先认识一些更加基本的运算 翻折 设某一序列x(n)&#xff0c;则x(-n)是以n0的纵轴为对称轴&#xff0c;将x(n)加以翻折得到的 移位 设某一序列x(n)&#xff0c;m为正整数&#xff0c;x(n-m)表示x(n)逐项依次延时&#xff08…

《数据库应用系统实践》------ 超市销售管理系统

系列文章 《数据库应用系统实践》------ 超市销售管理系统 文章目录 系列文章一、需求分析1、系统背景2、 系统功能结构&#xff08;需包含功能结构框图和模块说明&#xff09;3&#xff0e;系统功能简介 二、概念模型设计1&#xff0e;基本要素&#xff08;符号介绍说明&…

数据大航海时代,奇安信如何构筑数据安全的“天盾”?

你知道你的数据正在“被动”泄露吗&#xff1f; 随着ChatGPT技术的快速落地&#xff0c;数据安全面临的挑战越来越多。数据安全供应商Cyberhaven近期发布的一份研究显示&#xff0c;在2023年初的一周内&#xff0c;每十万名员工中机密业务数据被输入ChatGPT199次。用户可能没有…

C Primer Plus第十章编程练习答案

学完C语言之后&#xff0c;我就去阅读《C Primer Plus》这本经典的C语言书籍&#xff0c;对每一章的编程练习题都做了相关的解答&#xff0c;仅仅代表着我个人的解答思路&#xff0c;如有错误&#xff0c;请各位大佬帮忙点出&#xff01; 1.修改程序清单10.7的rain.c程序&…

如何在华为OD机试中获得满分?Java实现【记票统计】一文详解!

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: Java华为OD机试真题&#xff08;2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

VTK读入DICOM数据

date: 2019-04-02 16:26:00 VTK读入DICOM数据 DICOM示例&#xff1a; 图像来自www.dicomlibrary和medDream 准备图像 公开数据库 DICOM Library&#xff1a;链接&#xff0c;少量CT&#xff08;Computed Tomography&#xff0c;计算机断层扫描&#xff09;&#xff0c;MR&…

网络知识点之-HTTP协议

超文本传输协议&#xff08;Hyper Text Transfer Protocol&#xff0c;HTTP&#xff09;是一个简单的请求-响应协议&#xff0c;它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出&#xff1b;而消息内…