java 特殊字符过滤器_filter过滤器实现特殊字符转义

importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletRequestWrapper;importorg.apache.commons.lang.StringUtils;public class XssHttpServletRequestWraper extendsHttpServletRequestWrapper {publicXssHttpServletRequestWraper(HttpServletRequest request) {super(request);

}

@OverridepublicString getParameter(String name) {//Constants.MY_LOG.debug("getParameter----->转义处理");//return clearXss(super.getParameter(name));//保留勿删

return xssEncode(super.getParameter(name));

}

@OverridepublicString getHeader(String name) {//Constants.MY_LOG.debug("getHeader----->转义处理");//return clearXss(super.getHeader(name));//保留勿删

return xssEncode(super.getParameter(name));

}

@OverridepublicString[] getParameterValues(String name) {//Constants.MY_LOG.debug("getParameterValues----->转义处理");

if(!StringUtils.isEmpty(name)){

String[] values= super.getParameterValues(name);if(values != null && values.length > 0){

String[] newValues= newString[values.length];for(int i =0; i< values.length; i++){//newValues[i] = clearXss(values[i]);//保留勿删

newValues[i] =xssEncode(values[i]);

}returnnewValues;

}

}return null;

}/***

* 处理字符转义【勿删,请保留该注释代码】

*@paramvalue

*@returnprivate String clearXss(String value){

if (value == null || "".equals(value)) {

return value;

}

value = value.replaceAll("", ">");

value = value.replaceAll("\\(", "(").replace("\\)", ")");

value = value.replaceAll("'", "'");

value = value.replaceAll("eval\\((.*)\\)", "");

value = value.replaceAll("[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']", "\"\"");

value = value.replace("script", "");

return value;

}*/

/*** 将特殊字符替换为全角

*@params

*@return

*/

privateString xssEncode(String s) {if (s == null ||s.isEmpty()) {returns;

}

StringBuilder sb= newStringBuilder();for (int i = 0; i < s.length(); i++) {char c =s.charAt(i);switch(c) {case '>':

sb.append('>');//全角大于号

break;case '

sb.append('<');//全角小于号

break;case '\'':

sb.append('‘');//全角单引号

break;case '\"':

sb.append('“');//全角双引号

break;case '&':

sb.append('&');//全角&

break;case '\\':

sb.append('\');//全角斜线

break;case '/':

sb.append('/');//全角斜线

break;case '#':

sb.append('#');//全角井号

break;case '(':

sb.append('(');//全角(号

break;case ')':

sb.append(')');//全角)号

break;default:

sb.append(c);break;

}

}returnsb.toString();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值