java replace方法java处理sql注⼊⽅法——sql转义昨天被扫描出来sql注⼊问题,之前以为已经解决了,没想到还是出现了。
⽹上现有⽅法:
1、preparestatement
由于每次执⾏都需要prepare,所以不推荐使⽤
2、⼀个单引号变成两个
replace("'","''")
其他的字符串替代⽅法有着局限性,就不列举了。
我最开始使⽤的是2⽅法,但是还是有⽅法可以破解。
后来参考php的addslashes函数,写了⼀个java的escapeSql⽅法,如下:
public static String escapeSql(String str) {
if (str == null) {
return null;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char src = str.charAt(i);
switch (src) {
case '\'':
sb.append("''");// hibernate转义多个单引号必须⽤两个单引号
break;
case '\"':
case '\\':
sb.append('\\');
default:
sb.append(src);
break;
}
}
String();
}
经测试,已修复sql注⼊问题。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论