JSP 防盗链 过滤器

本文介绍了如何使用JSP实现防盗链功能,通过比较请求头来判断是否为外部站点访问。同时探讨了过滤器在Servlet编程中的作用,包括拦截请求、处理响应等,并列举了多种类型的过滤器示例。文章还展示了创建自定义过滤器的步骤,包括继承Filter类并实现相关方法,以及在web.xml中配置过滤器的必要过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

防盗链

  • 为防止,资源被窃取,通过取到,访问的请求头和自己的工程头像匹配,来实现简单的,防盗。本项目内访问时request.getHeader(“request”)(请求头)为null,而外部站点访问,值就为,外部站点的来源路径,借此可以判断,防盗,但是存在一个问题,当访问路径于本站名,相似时,会判定为站点内访问!
 <%
  //取到请求的头部名
        String requestHead=request.getHeader("request");
        System.out.println("请求头"+requestHead);
        //取到本项目的 路径
        String Ihead=request.getContextPath();
        System.out.print("项目路径"+Ihead); 
//站点内访问为空,requestHead==null           
    if(requestHead==null||Ihead.contains(requestHead)){
           //是本站点内的访问
       }else{
           //不是本站点内的访问
       }
    %>

过滤器

过滤器是可用于 Servlet 编程的 Java 类,可以实现以下目的:

  • 在客户端的请求访问后端资源之前,拦截这些请求。
  • 在服务器的响应发送回客户端之前,处理这些响应。

    * 根据规范建议的各种类型的过滤器:*

身份验证过滤器(Authentication Filters)。
数据压缩过滤器(Data compression Filters)。
加密过滤器(Encryption Filters)。
触发资源访问事件过滤器。
图像转换过滤器(Image Conversion Filters)。
日志记录和审核过滤器(Logging and Auditing Filters)。
MIME-TYPE 链过滤器(MIME-TYPE Chain Filters)。
标记化过滤器(Tokenizing Filters)。
XSL/T 过滤器(XSL/T Filters),转换 XML 内容。

JAVA 类

  • 建立一个类,继承Filter(javax.servlet.Filter包),实现destroy()、doFilter()、init() 这三个方法,使其变成一个过滤器。
public class Test implements Filter{

    @Override
    public void destroy() {
        // 销毁过滤器时,调用

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
          //把服务器请求,转换成网络服务器请求
           HttpServletRequest arg0=(HttpServletRequest)request;
           HttpServletResponse arg1=(HttpServletResponse)response;
        //取到请求的
        String requestHead=arg0.getHeader("request");
        System.out.println("请求头"+requestHead);
        //取到本项目的 路径
        String Ihead=arg0.getContextPath();

        if(requestHead==null||Ihead.contains(requestHead)){
              //是本站访问
            //过滤器放行,  使用 过滤器锁(FilterChain) 调用放行方法(doFilter)
            //参数一  请求  参数二  响应
            chain.doFilter(arg0, arg1);
        }else{
            //是外部站点访问
        }


    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
     //第一次启动时调用
    }



}

配置过滤器

打开web.xml 配置过滤器,此步骤,必须要做!

 <filter>
    <filter-name>glvq</filter-name>
    <filter-class>entity.Test</filter-class>
  </filter>

    <!--映射过滤器-->
  <filter-mapping>
    <filter-name>glvq</filter-name>
    <!-- /  需要过滤的文件夹或者文件,*代表过滤所有 -->
    <url-pattern>/*</url-pattern>
  </filter-mapping>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值