sql注入用转义字符防御时,如果遇到数据库的列名或是表名本身就带着特殊字符,应该怎么做?

问题遇到的现象和发生背景
用代码块功能插入代码,请勿粘贴截图
我想要达到的结果

sql注入用转义字符防御时,如果遇到数据库的列名或是表名本身就带着特殊字符,应该怎么做?

字段名或者表名包含特殊符号不影响,防止注入的是字段值。

校验的时候把这些特定的再筛选出来,弄个除外的验证,类似于这样

protected boolean checkIsSQLInjection(String sql){
        //统一转为小写
        sql = sql.toLowerCase();
        //过滤掉的sql关键字,可以手动添加
        String badSql ="create|where|group|select|delete|update|drop|--|from|truncate|and|or ";
        //避免误杀,排除合法参数
        String exculedParam = "----|resourceupdate|for|findresbyresidorresname|roleupdate|userupdate|finduserbynumorname|extorg|";
        String[] exculedParams = exculedParam.split("\\|"); 
        String[] badSqls = badSql.split("\\|");
        //排除合法参数
        for(int k=0;k<exculedParams.length;k++){
            if(sql.indexOf(exculedParams[k])>=0){
                return false;
            }
        }
        //检查注入
        for(int i=0;i<badSqls.length;i++){
            if(sql.indexOf(badSqls[i])>=0){
                return true;
            }
        }
        return false;
    }

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632