欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

MyBatis Plus 高风险 SQL 注入漏洞:查询封装器

最编程 2024-04-11 11:43:18
...
public void yxrs(String column, String value) {
      QueryWrapper<CmohEntity> wrapper = Wrappers.query();
      wrapper.like(true, column, value); // 存在SQL注入的问题,需要对column和value的值进行合法性的校验
      yxrsMapperService.list(wrapper);
  }

建议使用将 Wrappers.query() 替换为 Wrappers.lambdaQuery() 使用,可以实现相同的功能,并且由Lambda解析器进行SQL字段的识别,减少了SQL注入的风险。同时按照软件开发的基本理念之一:任何客户端的东西都不可信任,后端开发人员应对客户端(Web、APP、二方或三方系统)提交的数据进行充分的合法性校验,降低安全风险。

LambdaQueryWrapper 使用简单方法:

// 1 直接 new
yxrsMapperService.list(new LambdaQueryWrapper<CmohEntity>()
                .eq(CmohEntity:: getKeyId, dto.getKeyId()
                .eq(CmohEntity:: getName, dto.getName()));


// 2 
        LambdaQueryWrapper<CmohEntity> wrapper = Wrappers.lambdaQuery();
        wrapper.eq( CmohEntity :: getKeyId, dto.getKeyId());
        wrapper.eq( CmohEntity :: getName, dto.getName());
        yxrsMapperService.list(wrapper);