1、首先web.xml文件声明过滤器,对什么类型的访问进行过滤,过滤映射类、具体过滤信息实现类
<!-- 过滤器注释 --> <filter> <filter-name>FilterTest</filter-name> <filter-class>com.gbicc.java.system.action.FilterTest</filter-class> </filter> <filter-mapping> <filter-name>FilterTest</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
2、具体的java代码,过滤信息以及处理方式、结果(FilterTest.java)
package com.gbicc.java.system.action;
import java.io.IOException; import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
public class FilterTest implements Filter{
public void destroy() {
System.out.println("----Filter销毁----");
}
public void doFilter(ServletRequest request, ServletResponse response,FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)request;
HttpServletResponse res = (HttpServletResponse)response;
//获得request的Host值,判断是否是服务器的地址或域名
String myHost = req.getHeader("Host");
if(!StringUtils.equals(myHost, "xx.xxx.xx.x:7001") &&
!StringUtils.equals(myHost, "xx.xxx.xxx.xxx:8080") &&
!StringUtils.equals(myHost, "domain.name.com")){
//如果不是,则为非法盗用链
System.out.println("-------------------------非法盗用链!-------------------------");
res.setContentType("text/html");
res.setCharacterEncoding("UTF-8");
PrintWriter out = res.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<html>"); out.println(" <head>");
out.println(" <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>");
out.println(" <title>PICCLIFE移动驾驶舱</title>");
out.println(" </head>");
out.println(" <body>");
out.println(" <div style='font-size:45px;text-align:center;line-height:60vh;'>非法盗用链!</div>");
out.println(" </body>");
out.println("</html>");
out.flush();
out.close();
}else{
//如果是,则放行,执行目标资源,进行下一个过滤或者进入工程
filterChain.doFilter(req, res);
}
}
public void init(FilterConfig arg0) throws ServletException {
System.out.println("----Filter初始化----");
}
}
2017-08-14
再完美的程序都会存在漏洞!
——深海藏有溺亡之鱼