Java簡單的XSS過濾方法
阿新 • • 發佈:2018-11-11
Java簡單的XSS過濾方法
因為某甲方程式XSS過濾類一直沒起作用,所以百度了下,簡單的寫了個引數XSS過濾方法。。。。。上程式碼~~
import java.io.UnsupportedEncodingException; import java.net.URLDecoder; public class Xss { public static void main(String[] args) { //經過編碼後的XSS-Payload,<script>alert("xss");</script> String reqParam = "%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%22%78%73%73%22%29%3B%3C%2F%73%63%72%69%70%74%3E"; try { //解碼後的新引數 String newParam = URLDecoder.decode(reqParam,"UTF-8"); //呼叫XSS過濾方法進行過濾後輸出 System.out.println(xssEncode(newParam)); } catch (UnsupportedEncodingException e) { // 異常處理 e.printStackTrace(); } } private static String xssEncode(String s) { //XSS靜態過濾方法 if (s == null || s.isEmpty()) { return s; } StringBuilder sb = new StringBuilder(s.length() + 16); 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; default: sb.append(c); break; } } return sb.toString(); } }