如何解决如何在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 举报,一经查实,本站将立刻删除。