绕过mybaitsplus的逻辑删除

本文介绍如何在3.1.0版本中通过手动拼接SQL来绕过MyBatisPlus的逻辑删除机制。关键在于在对应的mapper中自定义selectAll方法,并利用sqlWhereEntityWrapper方法进行条件构造。
摘要由CSDN通过智能技术生成

3.1.0可以通过拼接sql的方式绕过

LambdaQueryWrapper<AdvertisementEntity> queryWrapper =  Wrappers.<AdvertisementEntity>lambdaQuery().eq(AdvertisementEntity::getIsDelete,1);
Function<LambdaQueryWrapper<AdvertisementEntity>,LambdaQueryWrapper<AdvertisementEntity>> function = r->{
    //条件
    if (条件){
        r.like(AdvertisementEntity::getTitle,"开平");
    }

    if (!StringUtils.hasText(r.getSqlSegment())){
        //防止or里的查询条件为空,导致sql查询为空
        r.last("1=1");
    }
    return r;
};
//Function<Param, Param> func = i->i.
queryWrapper.or(function);
advertisementService.list(queryWrapper);
也可以通过自定义sql注入器的形式,新写方法去跳过逻辑删除
@Configuration
@EnableTransactionManagement
@MapperScan("com.weixun.suke.mapper")
public class MybatisPlusConfig {

    /**
     * 逻辑删除
     */
    @Bean
    public ISqlInjector sqlInjecto
SQL注入是一种常见的安全漏洞,攻击者可以通过注入恶意的SQL代码来绕过应用程序的安全限制,执行非授权的数据库操作。在处理逻辑运算符时,攻击者可以利用这些运算符来绕过应用程序的验证和过滤机制。 以下是几种常见的绕过逻辑运算符的方法: 1. 使用注释符号绕过:攻击者可以使用注释符号(例如"--"或"/*")将恶意代码注释掉,从而绕过应用程序的验证。 2. 利用布尔逻辑:攻击者可以使用布尔逻辑运算符(例如AND、OR、NOT)来构造恶意查询,以绕过应用程序的过滤机制。例如,攻击者可以使用OR运算符来绕过用户名和密码的验证。 3. 利用字符串拼接:如果应用程序在构建SQL查询时使用了字符串拼接,而没有正确地对用户输入进行转义或参数化处理,那么攻击者可以通过插入特殊字符来改变查询的逻辑。例如,攻击者可以在输入中插入单引号来绕过字符串的闭合,从而在查询中插入恶意代码。 4. 利用逻辑错误:有时应用程序中可能存在逻辑错误,攻击者可以通过利用这些错误来绕过验证和过滤机制。例如,攻击者可以通过构造恶意的查询条件来绕过应用程序的逻辑判断。 为了防止SQL注入攻击,开发人员应该采取以下措施: - 使用参数化查询或预编译语句,而不是字符串拼接来构建SQL查询。 - 对用户输入进行正确的转义或过滤处理,以防止恶意代码的注入。 - 最小化数据库用户的权限,只给予其必要的权限。 - 定期更新和修补数据库和应用程序的安全漏洞。 总之,防止SQL注入攻击是一个综合性的工作,需要在应用程序设计和开发的各个环节都严格遵循安全原则和最佳实践。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值