Mybatis-Plus 添加插件实现禁止全表更新和全表删除操作

Mybatis-Plus 添加插件实现禁止全表更新和全表删除操作
开始 :

在实际项目开发中,可能会由于疏忽或者有人恶意将整个表格的数据修改、或删除。这对项目/产品的影响是不可忽视的.


实现 :

MyBatis Plus 提供了 BlockAttackInnerInterceptor (阻断攻击Sql解析器) 插件,该插件可以阻止全表更新和删除操作。在一定程度上,保证了数据库数据的安全。下面将通过示例介绍怎样使用该插件:

@Configuration
public class MybatisPlusConfigure {

    @Bean
    public MybatisPlusInterceptor paginationInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 防止全表更新与删除 ,主要影响的是 update 和 delete 语句.不论是xml方式还是编码方式都会拦截
        interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
        return interceptor;
    }
}

@Configuration
public class MybatisPlusConfigure {

    /**
     * 注册分页插件
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
    	// 分页拦截器添加 BlockAttackSqlParser()
        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
        List<ISqlParser> sqlParserList = new ArrayList<>();
        // 添加阻断攻击Sql解析器: 阻止全表更新和删除操作
        sqlParserList.add(new BlockAttackSqlParser());
        paginationInterceptor.setSqlParserList(sqlParserList);
        paginationInterceptor.setLimit(-1);
        return paginationInterceptor;
    }
}

测试

测试全表更新 Update 语句不带 WHERE
抛出一下异常信息:

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
### Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Prohibition of table update operation

你可能感兴趣的:(mybatis,java,开发语言)