1. 程式人生 > >Java簡單的XSS過濾方法

Java簡單的XSS過濾方法

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();


	}

}