算是提供思路吧,基本的就是对特殊字符进行替换,究其根本的解决之道,还有就是前台也可以进行特殊字符的替换,算是双管齐下吧,还有很多的解决之道,在此不做过多描述,该演示代码中提供了JS的前台替换语句及后台的JAVA代码替换,都是通过正则实现的,如果反复使用replace().replace()这种连续方式可以想像程序的运行时间多么可观,虽然时间不会太久,但确实让人无法忍受。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//js代码的替换
// var strTemp="^&h\\/!@#$%^&*()+|/jgfj&%fgd''$#$@!)(}|";
// strTemp.replace(/[$ <> & % ' ( ) + - = " ; / ]/g, "")
//一种解决SQL盲注的后台过虑,其方式就是将可能出现的非法字符进行规制
//java代码替换特殊字符
String str="^&h\\/!@#$%^&*()+|/jgfj&%fgd''$#$@!)(}|";
if(str!=null){
// Pattern p = Pattern.compile("\\s*|| | ");
//System.out.println("before:" + str);
// Matcher m = p.matcher(str);
String result = str.replaceAll("(^|\\&)|(\\|)|(\\;)|(\\$)|(\\%)|(\\@)|(\\')|(\\\")|(\\>)|(\\<)|(\\))|(\\()|(\\+)|(\\,)|(\\\\)|(\\#|$)","");
System.out.println("result:" + result);
//输出结果:result:^h/!^*/jgfjfgd!}
}
}
}