1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
public class XssRequestWrapper extends HttpServletRequestWrapper {
private static Policy policy = null;
static { String path = XssRequestWrapper.class.getClassLoader().getResource("antisamy-ebay.xml").getFile(); System.out.println("policy_filepath:" + path); if (path.startsWith("file")) { path = path.substring(6); } try { policy = Policy.getInstance(path); } catch (PolicyException e) { e.printStackTrace(); } }
public XssRequestWrapper(HttpServletRequest request) { super(request); } /** * 参数清洗 */ @Override public String getParameter(String paramString) { String str = super.getParameter(paramString); if (str == null) return null; return xssClean(str); } /** * 请求头清洗 */ @Override public String getHeader(String paramString) { String str = super.getHeader(paramString); if (str == null) return null; return xssClean(str); } /** * 参数Map清洗 */ @SuppressWarnings("rawtypes") @Override public Map<String, String[]> getParameterMap() { Map<String, String[]> request_map = super.getParameterMap(); Iterator iterator = request_map.entrySet().iterator(); System.out.println("request_map" + request_map.size()); while (iterator.hasNext()) { Map.Entry me = (Map.Entry) iterator.next(); String[] values = (String[]) me.getValue(); for (int i = 0; i < values.length; i++) { values[i] = xssClean(values[i]); } } return request_map; } /** * 参数数组清洗 */ @Override public String[] getParameterValues(String paramString) { String[] arrayOfString1 = super.getParameterValues(paramString); if (arrayOfString1 == null) return null; int i = arrayOfString1.length; String[] arrayOfString2 = new String[i]; for (int j = 0; j < i; j++) arrayOfString2[j] = xssClean(arrayOfString1[j]); return arrayOfString2; }
/** * 清洗数据 */ private String xssClean(String value) { AntiSamy antiSamy = new AntiSamy(); try { final CleanResults cr = antiSamy.scan(value, policy); // 安全的HTML输出 String str = StringEscapeUtils.unescapeHtml(cr.getCleanHTML()); str = str.replaceAll(antiSamy.scan(" ",policy).getCleanHTML(),""); str = str.replaceAll(antiSamy.scan(""",policy).getCleanHTML(),"""); return str; } catch (ScanException e) { e.printStackTrace(); } catch (PolicyException e) { e.printStackTrace(); } return value; } }
|
近期评论