转载自:www.javaman.cn
BlockAttackInnerInterceptor
是 MyBatis-Plus 的一个内置拦截器,用于防止恶意的全表更新或删除操作。当你添加了这个拦截器后,它会检查即将执行的 SQL 语句,如果有尝试进行全表更新或删除的语句,该拦截器会阻止这些操作。
那么,BlockAttackInnerInterceptor
是如何工作的呢?
- SQL 解析: 拦截器首先会解析即将执行的 SQL 语句,识别其类型和意图。例如,识别出是
UPDATE
还是DELETE
语句。 - 全表检查: 对于
UPDATE
和DELETE
语句,拦截器会进一步检查它们是否针对整张表。通常,恶意的全表操作不会带有WHERE
子句或者其WHERE
子句条件非常宽松。 - 阻止操作: 如果检测到是全表更新或删除操作,拦截器会抛出一个异常,从而阻止该 SQL 语句的执行。
这样,即使有恶意用户尝试利用 SQL 注入来删除或更新整张表的数据,BlockAttackInnerInterceptor
也会确保这样的操作不会被执行。
但需要注意的是,BlockAttackInnerInterceptor
可以提供一定程度的保护,但它不是防止 SQL 注入的唯一手段。
@Configuration
@MapperScan({"com.ds.blog.system.mapper","com.ds.blog.admin.mapper"})
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
//防全表更新删除插件
mybatisPlusInterceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
return mybatisPlusInterceptor;
}