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

                                                              再完美的程序都会存在漏洞!

                                                                     ——深海藏有溺亡之鱼