广告
  • 微信
您当前的位置: 首页 >  Ai+Java Dev >  Java开发

Java代码写法的表名和字段进行转义和check

作者:XiaoZhang 时间:2026-06-03 阅读数:0人阅读
@Override
    public boolean duplicateCheckData(DuplicateCheckVo duplicateCheckVo) {
        Long count = null;

        // 1.针对采用 ${}写法的表名和字段进行转义和check
        String table = SqlInjectionUtil.getSqlInjectTableName(duplicateCheckVo.getTableName());
        String fieldName = SqlInjectionUtil.getSqlInjectField(duplicateCheckVo.getFieldName());
        duplicateCheckVo.setTableName(table);
        duplicateCheckVo.setFieldName(fieldName);
       
        // 2.SQL注入check(只限制非法串改数据库)
        //关联表字典(举例:sys_user,realname,id)
        SqlInjectionUtil.filterContent(table, fieldName);
       
        // 3.表字典黑名单check
        String checkSql = table + SymbolConstant.COMMA + fieldName + SymbolConstant.COMMA;
        dictQueryBlackListHandler.isPass(checkSql);

        // 4.执行SQL 查询是否存在值
        try{
            if (StringUtils.isNotBlank(duplicateCheckVo.getDataId())) {
                // [1].编辑页面校验
                count = sysDictMapper.duplicateCheckCountSql(duplicateCheckVo);
            } else {
                // [2].添加页面校验
                count = sysDictMapper.duplicateCheckCountSqlNoDataId(duplicateCheckVo);
            }
        }catch(MyBatisSystemException e){
            log.error(e.getMessage(), e);
            String errorCause = "查询异常,请检查唯一校验的配置!";
            throw new JeecgBootException(errorCause);
        }

        // 4.返回结果
        if (count == null || count == 0) {
            // 该值可用
            return true;
        } else {
            // 该值不可用
            log.info("该值不可用,系统中已存在!");
            return false;
        }
  }

本站所有文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。

如果侵犯了你的权益请来信告知我们删除。

头像

XiaoZhang

当你还撑不起你的梦想时,就要去奋斗。如果缘分安排我们相遇,请不要让她擦肩和过。我们一起奋斗!

微信