•  

SQL语句合法性校验工具类

2018-01-08

public static String selectSqlVerify(String sql) {
        String ret = "";
        if (sql.equals("") && sql != null) {
            ret = "SQL语句为空!";
            return ret;
        }
        // 将SQL语句中的多个相连空格变为单个
        String selectSql = sql.replaceAll("\\s{1,}", " ");
        // 可添加需要过滤关键词
        String[] keyWords = new String[] { "CHAR", "EXEC", "insert", "CREATE", "DELETE", "UPDATE", "CHR", "MID",
                "MASTER", "TRUNCATE", "DECLARE", ";", "\"" };
        String[] sqlArray = selectSql.split("[(,)|=\\ ]");
        // 放置SQL语句中所有的单词
        Set<String> sqlList = new HashSet<String>();
        for (int i = 0; i < sqlArray.length; i++) {
            sqlList.add(sqlArray[i]);
        }
        // 比较查看SQL语句中是否含有非查询关键字
        for (String st : sqlList) {
            for (int j = 0; j < keyWords.length; j++) {
                // 全部转换成大写比较
                if (st.toUpperCase().equals(keyWords[j].toUpperCase())) {
                    ret = "不能包含" + st.toUpperCase() + "非查询关键字!";
                    return ret;
                }
            }
        }
        ret = "true";
        return ret;
    }
申明:本文受法律保护,未经作者同意不得用于商业用途,如转载请说明出处!
评论