首页 > 其他分享 >【Mybatis-Plus】防全表更新与删除插件

【Mybatis-Plus】防全表更新与删除插件

时间:2024-08-27 16:37:09浏览次数:8  
标签:插件 更新 防全表 全表 Plus user public BlockAttackInnerInterceptor

From: https://baomidou.com/plugins/block-attack/

BlockAttackInnerInterceptor 是 MyBatis-Plus 框架提供的一个安全插件,专门用于防止恶意的全表更新和删除操作。该插件通过拦截 update 和 delete 语句,确保这些操作不会无意中影响到整个数据表,从而保护数据的完整性和安全性。

功能特性

  • 阻止全表更新删除:插件能够识别并阻止没有指定条件的 update 和 delete 语句,这些语句可能会导致全表数据被修改或删除。
  • 保护数据安全:通过限制全表操作,减少因误操作或恶意攻击导致的数据丢失风险。

使用方法

  1. 注入插件:在 Spring Boot 配置类中,通过 @Bean 注解将 MybatisPlusInterceptor 注入到 Spring 容器中,并添加 BlockAttackInnerInterceptor 作为内部拦截器。
@Configuration public class MybatisPlusConfig {   @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor()); return interceptor; } }  
  1. 配置拦截规则:插件默认拦截没有指定条件的 update 和 delete 语句。如果需要自定义拦截规则,可以参考 MyBatis-Plus 的文档进行配置。

测试示例

全表更新测试

以下测试示例展示了如何使用 BlockAttackInnerInterceptor 来防止全表更新操作。

@SpringBootTest public class QueryWrapperTest {   @Autowired private UserService userService;   /** * SQL:UPDATE user SET name=?,email=?; */ @Test public void testFullUpdate() { User user = new User(); user.setId(999L); user.setName("custom_name"); user.setEmail("[email protected]"); // 由于没有指定更新条件,插件将抛出异常 // com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Prohibition of table update operation Assertions.assertThrows(MybatisPlusException.class, () -> { userService.saveOrUpdate(user, null); }); } }  

部分更新测试

以下测试示例展示了如何正确地执行部分更新操作,插件不会对此类操作进行拦截。

@SpringBootTest public class QueryWrapperTest {   @Autowired private UserService userService;   /** * SQL:UPDATE user SET name=?, email=? WHERE id = ?; */ @Test public void testPartialUpdate() { LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(User::getId, 1); User user = new User(); user.setId(10L); user.setName("custom_name"); user.setEmail("[email protected]"); // 由于指定了更新条件,插件不会拦截此操作 userService.saveOrUpdate(user, wrapper); } }  

注意

  • 合理配置:确保在配置插件时,考虑到项目的实际需求,避免过度限制导致正常操作受阻。
  • 测试验证:在生产环境部署前,应充分测试插件的功能,确保其按预期工作。

BlockAttackInnerInterceptor 插件是 MyBatis-Plus 提供的一个重要的安全工具,它能够有效地防止全表更新和删除操作,保护数据库免受意外或恶意的数据破坏。通过合理配置和使用该插件,可以显著提高应用程序的数据安全性。

标签:插件,更新,防全表,全表,Plus,user,public,BlockAttackInnerInterceptor
From: https://www.cnblogs.com/joeblackzqq/p/18383011

相关文章

  • 自动引用elementplus组件
    1、Vue项目中安装ElementPlus#NPM$npminstallelement-plus--save#Yarn$yarnaddelement-plus#pnpm$pnpminstallelement-plus2、组件按需引入配置Vant按需引入---安装:unplugin-vue-components 插件unplugin-vue-components 插件可以在Vue文件中自......
  • mitk添加插件步骤
    一插件添加说明在MITK(MedicalImagingInteractionToolkit)中添加一个插件涉及多个步骤。以下是一个基本的指南,帮助你在MITK中添加插件:1.**设置开发环境**:  -确保已安装必要的开发工具,例如CMake和一个兼容的C++编译器。  -下载并构建MITK的源代码。这通......
  • mitk插件有哪些以及作用
    MITK(MedicalImagingInteractionToolkit)是一个用于医疗图像处理与交互的开源软件框架。它提供了一套丰富的插件,使其功能得到扩展和定制。以下是一些常见的MITK插件及其作用:1.**DICOM支持插件**:  -**作用**:提供对DICOM(DigitalImagingandCommunicationsinMedic......
  • neovim 安装插件,并配置vimconig
    neovim安装插件,并配置vimconig1.neovim安装参考这里2.插件包管理器安装Vundle是vim的一个插件管理器,同时它本身也是vim的一个插件。插件管理器用于方便、快速的安装、删除、Vim更新插件。vimVundle插件官方地址:https://github.com/VundleVim/Vundle.vim下载Vundle插件......
  • vue3uniapps使用富文本mp-html插件
    1.实现效果具体需求:顶部是搜索栏,包括搜索结果个数,目前跳到第几个,包含上一个、下一个按钮。富文本区域关键词高亮黄色,当前关键词为高亮橙色。如图2.版本号用到vue3和uniapp,mp-html插件版本是v2.5.0,插件地址:https://ext.dcloud.net.cn/plugin?id=805用npm方式打包放到......
  • auto_size_text 自动调整文本大小以适应其容器的 Flutter 插件
    依赖auto_size_text:^3.0.0//自动调整文本大小例子classAutoSizeRichTextExampleextendsStatelessWidget{@overrideWidgetbuild(BuildContextcontext){returnCenter(child:Container(width:double.infinity,child:AutoSi......
  • 前端模块自动导入的插件
    前言开发中通常会有很多导入语句,如何确保一些通用的api和hook无需每次手动导入即可使用。<scriptsetuplang="ts">import{ref,reactive}from"vue"import{useRoute,useRouter}from"vue-router"import{login}from"./api/user"constcount=r......
  • 利用kafka和kafka connect插件debezium实现oracle表同步
    1.kafka安装1.1.java安装openjdk下载,建议使用17,至少应该高于版本11#进入家目录,解压下载的java包,配置环境变量tarvxfopenjdk-20.0.1_linux-x64_bin.tar.gz-C/usr/local/vi.bash_profile#注意要把JAVA的目录放到$PATH之前exportJAVA_HOME=/usr/local/jdk-20exportP......
  • UE5蓝图 离线实时语音转文字插件 教程 c/c++插件 毫秒级响应 比http更节约资源
    UE5蓝图实现离线实时语音转文字插件教程如何用UE5蓝图实现离线实时语音转文字,实时接收麦克风音频并且快速的转换成文字。那么我来分享一下ez2txt这个插件。bilibili使用教程效果展示:蓝图:只要启动麦克风就可以了,其他的繁琐步骤插件都封装好了。参数说明Rule1_m......
  • WordPress插件存在严重缺陷,允许黑客获取管理员访问权限
    近日,网络安全研究人员披露了WordPress的LiteSpeedCache插件中的一个严重安全漏洞,该漏洞可能允许未经身份验证的用户获得管理员权限。国际知名网络黑客安全专家、东方联盟创始人郭盛华在周一的一份报告中表示:“该插件存在未经身份验证的权限提升漏洞,任何未经身份验证的访问者都......