Mybatis-SQL注入

    /**
     * 测试sql注入攻击-sql会睡眠5秒才返回
     */
    @Test
    public void test02() {
        QueryWrapper<Result> queryWrapper = new QueryWrapper<>();
        queryWrapper.select(Result.ID);
        String param = "' and (select * from (select sleep(5)) a) ='";
        String format = String.format(" %s REGEXP CONCAT('(',REPLACE('%s',',','|'),')') ",
                Result.HIT_MIND_LABEL, param);
        System.out.println(format);
        queryWrapper.apply(format);
        List<Result> list = resultService.list(queryWrapper);
        System.out.println(JSON.toJSONString(list));
    }
    /**
     * 防sql注入,如下不会出现sql注入
     */
    @Test
    public void test03() {
        System.out.println(JSON.toJSONString(resultService.list().stream().map(Result::getHitMindLabel).toArray()));
        QueryWrapper<Result> queryWrapper = new QueryWrapper<>();
        queryWrapper.select(Result.ID);
        //queryWrapper.eq(Result.COMPANY_ID, 279);
        //String param=" '' and (select * from (select sleep(5)) a) = '' ";
        String param = "333,444";
        queryWrapper.apply(Result.LABLE+ " REGEXP CONCAT('(',REPLACE({0},',','|'),')') ", param);
        List<Result> list = resultMapper.selectList(queryWrapper);
        System.out.println(JSON.toJSONString(list));
    }

错误的写法:

        queryWrapper.apply(StringUtils.isNotEmpty(resultQueryDTO.getHitMindIds()),
                String.format(" %s REGEXP CONCAT('(',REPLACE('%s',',','|'),')') ",
                        Result.HIT_MIND_LABEL, resultQueryDTO.getHitMindIds()));

正确的写法

        queryWrapper.apply(StringUtils.isNotEmpty(resultQueryDTO.getHitMindIds()),
                Result.HIT_MIND_LABEL + " REGEXP CONCAT('(',REPLACE({0},',','|'),')') ", resultQueryDTO.getHitMindIds());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值