【代码审计】JAVAWeb基础过滤器
JAVAWeb基础过滤器
0x00 版权声明
JAVA基础系列是笔者学习@炼石星球的笔记,大部分文字描述取自星球内发布的教程文件,仅作学习。
0x01 什么是过滤器、监听器和拦截器
- 过滤器:在servlet中,过滤器也就是 Filter ,它主要用于过滤字符编码,做一些统 一的业务等等。是使用 javax.servlet.Filter 接口进行实现的。在代码安全中,他常被用于防止XSS,防SQL注入,防任意文件上传等。再配置了Filter之后,它可以统一过滤危险字符,省时省力。
- 监听器:在servlet中,监听器也就是 Listener ,它主要用于做一些初始化的内容。 是使用 javax.servlet.ServletContextListener 接口进行实现的。如果同时有监听器和过滤器,监听器是在过滤器之前启动。
- 拦截器:依赖WEB框架,在SrpingMvc中就依赖SpringMVC框架。是属于面向切面变成的一种运用
0x02 过滤器和拦截器的区别
- 拦截器是基于Java的反射机制的,而过滤器是基于函数回调
- 过滤器依赖与servlet容器,而拦截器不依赖与servlet容器
- 拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用
- 拦截器可以访问action上下文、值栈里的对象,而过滤器不能
- 在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被 调用一次
0x03 编程实现
第一步,main新建package
接上一篇JAVAWeb基础第一个Servlet,在main.java文件夹右键选择新建package包,导入com.test.filter,在filter文件夹新建FilterTest.class文件,并写入以下代码:
1 | package com.test.filter; |
首先通过 String requestURI = request.getRequestURI(); 获取URL路径。然后 对路径进行判断,如果路径中包含 /FirstServlet ,则放行。否则就跳转到根路径 下。
第二步,注册过滤器
在web.xml中配置注册过滤器:
1 | <!--配置过滤器--> |
第三步,运行项目
点击运行项目,观察结果:
可以看到,当访问FirstServlet目录,页面是Servlet页面,当访问不存在的目录,页面显示的是项目根目录。