微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在spring中转义sql注入的输入字符串?

如何解决如何在spring中转义sql注入的输入字符串?

在我的 Spring Boot 项目中,我试图转义输入字符串以防止 sql 注入。 我必须做这种类型的转义,因为我无权访问数据库。关于db,我唯一能说的是它是一个postgres db。 现在我已经创建了一个包含两个方法的类,这些方法应该逃避这个:

public class sqlInjectionescaper {

    public static String escapestringBlackList(String value) {
        StringBuilder sBuilder = new StringBuilder(value.length() * 11 / 10);

        int stringLength = value.length();

        for (int i = 0; i < stringLength; ++i) {
            char c = value.charat(i);

            switch (c) {
            case 0: 
                sBuilder.append('\\');
                sBuilder.append('0');
                break;

            case '\n': 
                sBuilder.append('\\');
                sBuilder.append('n');
                break;

            case '\r':
                sBuilder.append('\\');
                sBuilder.append('r');
                break;

            case '\t':
                sBuilder.append('\\');
                sBuilder.append('t');
                break;

            case '\f':
                sBuilder.append('\\');
                sBuilder.append('f');
                break;

            case '\b':
                sBuilder.append('\\');
                sBuilder.append('b');
                break;

            case '\\':
                sBuilder.append('\\');
                sBuilder.append('\\');
                break;

            case '\'':
                sBuilder.append('\\');
                sBuilder.append('\'');
                break;

            case '"': 
//              if (escapeDoubleQuotes) {
//                  sBuilder.append('\\');
//              }

                sBuilder.append('"');
                break;

            case '\032': /* This gives problems on Win32 */
                sBuilder.append('\\');
                sBuilder.append('Z');
                break;

            case '\u00a5':
            case '\u20a9':
                // escape characters interpreted as backslash by MysqL
                // fall through

            default:
                sBuilder.append(c);
            }
        }

        return sBuilder.toString();
    }

    public String realScapestring(String value) {
        String data = null;
        if (value != null && value.length() > 0) {
            value = value.replace("\\","\\\\");
            value = value.replace("'","\\'");
            value = value.replace("\0","\\0");
            value = value.replace("\n","\\n");
            value = value.replace("\r","\\r");
            value = value.replace("\"","\\\"");
            value = value.replace("\\x1a","\\Z");
            data = value;
        }
        return data;
    }

}

我还想添加十六进制和 unicode 八进制字符...我如何在 swtich 中添加它们并替换 ???

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。