diff --git a/src/main/java/com/bwie/Filter/XssFilter.java b/src/main/java/com/bwie/Filter/XssFilter.java new file mode 100644 index 0000000..687b2ef --- /dev/null +++ b/src/main/java/com/bwie/Filter/XssFilter.java @@ -0,0 +1,35 @@ +package com.bwie.Filter; + +import com.bwie.config.XssHttpServletRequestWrapper; + +import javax.servlet.*; +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; + +public class XssFilter implements Filter { + @Override + public void init(FilterConfig filterConfig) throws ServletException { + + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + ServletRequest requestWrapper = null; + if(request instanceof HttpServletRequest) { + requestWrapper = new XssHttpServletRequestWrapper((HttpServletRequest) request); + } + //获取请求中的流如何,将取出来的字符串,再次转换成流,然后把它放入到新request对象中。 + // 在chain.doFiler方法中传递新的request对象 + if(requestWrapper == null) { + + chain.doFilter(request, response); + } else { + chain.doFilter(requestWrapper, response); + } + } + + @Override + public void destroy() { + + } +} diff --git a/src/main/java/com/bwie/config/XssHttpServletRequestWrapper.java b/src/main/java/com/bwie/config/XssHttpServletRequestWrapper.java new file mode 100644 index 0000000..2c0675a --- /dev/null +++ b/src/main/java/com/bwie/config/XssHttpServletRequestWrapper.java @@ -0,0 +1,57 @@ +package com.bwie.config; + +import javax.servlet.ReadListener; +import javax.servlet.ServletInputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStreamReader; + +public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { + public String _body; + + public XssHttpServletRequestWrapper(HttpServletRequest request) throws IOException { + super(request); + StringBuffer sBuffer = new StringBuffer(); + BufferedReader bufferedReader = request.getReader(); + String line; + while ((line = bufferedReader.readLine()) != null) { + sBuffer.append(line); + } + _body = sBuffer.toString(); + + } + + @Override + public ServletInputStream getInputStream() { + final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(_body.getBytes()); + return new ServletInputStream() { + @Override + public int read() { + return byteArrayInputStream.read(); + } + + @Override + public boolean isFinished() { + return false; + } + + @Override + public boolean isReady() { + return false; + } + + @Override + public void setReadListener(ReadListener listener) { + + } + }; + } + + @Override + public BufferedReader getReader() { + return new BufferedReader(new InputStreamReader(this.getInputStream())); + } +} diff --git a/src/main/java/com/bwie/utils/HttpServletRequestReader.java b/src/main/java/com/bwie/utils/HttpServletRequestReader.java new file mode 100644 index 0000000..5f862d8 --- /dev/null +++ b/src/main/java/com/bwie/utils/HttpServletRequestReader.java @@ -0,0 +1,35 @@ +package com.bwie.utils; + +import javax.servlet.http.HttpServletRequest; +import java.io.BufferedReader; +import java.io.IOException; + +public class HttpServletRequestReader { + + // 字符串读取 + // 方法一 + public static String ReadAsChars(HttpServletRequest request) { + + BufferedReader br = null; + StringBuilder sb = new StringBuilder(""); + try { + br = request.getReader(); + String str; + while ((str = br.readLine()) != null) { + sb.append(str); + } + br.close(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + if (null != br) { + try { + br.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return sb.toString(); + } +} diff --git a/target/classes/com/bwie/Filter/XssFilter.class b/target/classes/com/bwie/Filter/XssFilter.class new file mode 100644 index 0000000..a33cebd Binary files /dev/null and b/target/classes/com/bwie/Filter/XssFilter.class differ diff --git a/target/classes/com/bwie/config/XssHttpServletRequestWrapper$1.class b/target/classes/com/bwie/config/XssHttpServletRequestWrapper$1.class new file mode 100644 index 0000000..a3e5b27 Binary files /dev/null and b/target/classes/com/bwie/config/XssHttpServletRequestWrapper$1.class differ diff --git a/target/classes/com/bwie/config/XssHttpServletRequestWrapper.class b/target/classes/com/bwie/config/XssHttpServletRequestWrapper.class new file mode 100644 index 0000000..9ba20d8 Binary files /dev/null and b/target/classes/com/bwie/config/XssHttpServletRequestWrapper.class differ diff --git a/target/classes/com/bwie/utils/HttpServletRequestReader.class b/target/classes/com/bwie/utils/HttpServletRequestReader.class new file mode 100644 index 0000000..b0f6626 Binary files /dev/null and b/target/classes/com/bwie/utils/HttpServletRequestReader.class differ diff --git a/target/demo11-3.6.0.jar b/target/demo11-3.6.0.jar new file mode 100644 index 0000000..bdfcdb4 Binary files /dev/null and b/target/demo11-3.6.0.jar differ