MyBatisPlus (20) предотвращает полное обновление и удаление таблицы.

иллюстрировать

Для операторов обновления и удаления предотвратите вредоносное полное обновление таблицы и полное удаление таблицы.

Метод реализации

РазмещениеBlockAttackInnerInterceptorБирильщик

Вставьте сюда описание изображения

код

package com.example.core.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@MapperScan("com.example.web")
public class MybatisPlusConfig {
    
    

    /**
     * 添加拦截器
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
    
    
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor()); // 针对 update 和 delete 语句 作用: 阻止恶意的全表更新删除
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));// 如果配置多个插件,切记分页最后添加
        // interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); 如果有多数据源可以不配具体类型 否则都建议配上具体的DbType
        return interceptor;
    }
}

тест

Обновить полную таблицу

    /**
     * 更新全表
     */
    @Test
    public void updateAll() {
    
    
        User user = new User();
        user.setGender(GenderEnum.MALE);

        mapper.update(user, null);
    }

Вставьте сюда описание изображения

Удалить всю таблицу

    /**
     * 删除全表
     */
    @Test
    public void deleteAll() {
    
    
        mapper.delete(null);
    }

Вставьте сюда описание изображения

Обычное обновление

Обновляйтесь нормально и это не повлияет.

    /**
     * 更新一条数据
     */
    @Test
    public void update() {
    
    
        User user = new User();
        user.setId(7L);
        user.setGender(GenderEnum.MALE);

        mapper.updateById(user);
    }

Вставьте сюда описание изображения

До включения защиты

Прежде чем защита будет включена, вы можете обновить всю таблицу или удалить ее целиком.

Полное обновление таблицы

Вставьте сюда описание изображения
Вставьте сюда описание изображения

Удалить всю таблицу

Вставьте сюда описание изображения
Вставьте сюда описание изображения

Guess you like

Origin blog.csdn.net/sgx1825192/article/details/133894621