zoukankan      html  css  js  c++  java
  • Referer防盗链

    一、目录展示

      分为AProject和BProject两个项目进行测试

      

    二、修改c:windowssystem32driversetc下的hosts文件

      

    三、aindex.jsp

      

    四、bindex.jsp

       

    五、web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
    
        <filter>
            <filter-name>imgFilter</filter-name>
            <filter-class>com.zn.ImageFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>imgFilter</filter-name>
            <url-pattern>/img/*</url-pattern>
        </filter-mapping>
    
    </web-app>

    六、ImageFilter

    package com.zn;
    
    import javax.servlet.*;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class ImageFilter implements Filter {
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            System.out.println("过滤器启动!");
        }
    
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            System.out.println("走了吗");
            //获取到当前请求的连接地址和上一个发送请求的地址
            HttpServletRequest request=(HttpServletRequest)servletRequest;
            HttpServletResponse response=(HttpServletResponse)servletResponse;
    
            //获取上一个发送请求的连接
            String referer=request.getHeader("Referer");
            String serverName = request.getServerName();
            System.out.println(referer+"	hhhh	"+serverName);
    
            if (referer==null||!referer.contains(serverName)){
                request.getRequestDispatcher("/img/ff.png").forward(request,response);
                return;
            }
    
            //放行
            filterChain.doFilter(request,response);
        }
    
        @Override
        public void destroy() {
            System.out.println("过滤器销毁!");
        }
    }

    七、效果展示

      1、访问AProject项目可以访问

      

      2、拦截以后使用b.com的BProject的访问为非法访问

      

  • 相关阅读:
    理解 es7 async/await
    es6 Promise对象
    es6 Object.assign(target, ...sources)
    关于索引的一些知识
    关于this和$(this)
    js自定data-*和jquery的data()用法
    unslider插件实现轮播图效果
    清除浮动的方法
    事件绑定、事件监听和事件委托
    node.js的安装及配置
  • 原文地址:https://www.cnblogs.com/Zzzzn/p/12260179.html
Copyright © 2011-2022 走看看