• 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的访问为非法访问

      

  • 相关阅读:
    Eclipse的tab键为4个空格完整方法 附:阿里代码开发规范书
    Linux系统 安装JDK和tomcat
    Window10安装linux
    oracle 查询表重复数据 并 删除保留一条
    Oracle 新增数据 insert into整理
    业需软需word小技巧
    oracle数据库创建表且主键自增
    eclipse更改jdk版本(1.6》1.7 以此类推)
    pytest框架优化——清理历史截图图片和allure报告文件
    allure定制化输出测试报告,让报告锦上添花!
  • 原文地址:https://www.cnblogs.com/Zzzzn/p/12260179.html
Copyright © 2020-2023  润新知