JavaWeb-Filter基础


一、Filter基本概念

javax.servlet.FilterServlet2.3新增的一个特性,主要用于过滤URL请求,通过Filter我们可以实现URL请求资源权限验证、用户登陆检测等功能。

Filter是一个接口,实现一个Filter只需要重写initdoFilterdestroy方法即可,其中过滤逻辑都在doFilter方法中实现。

Filter的配置类似于Servlet,由<filter><filter-mapping>两组标签组成,如果Servlet版本大于3.0同样可以使用注解的方式配置Filter。

  • 基于注解实现的Filter示例:

二、FIlter和Servlet

2.1 两者总结

FilterServlet都是Java Web提供的API,简单的总结了下有如下共同点。

  1. FilterServlet都需要在web.xml注解(@WebFilter@WebServlet)中配置,而且配置方式是非常的相似的。
  2. FilterServlet都可以处理来自Http请求的请求,两者都有requestresponse对象。
  3. FilterServlet基础概念不一样,Servlet定义是容器端小程序,用于直接处理后端业务逻辑,而Filter的思想则是实现对Java Web请求资源的拦截过滤。
  4. FilterServlet虽然概念上不太一样,但都可以处理Http请求,都可以用来实现MVC控制器(Struts2Spring框架分别基于FilterServlet技术实现的)。
  5. 一般来说Filter通常配置在MVCServletJSP请求前面,常用于后端权限控制、统一的Http请求参数过滤(统一的XSSSQL注入Struts2命令执行等攻击检测处理)处理,其核心主要体现在请求过滤上,而Servlet更多的是用来处理后端业务请求上。

2.2 代码审计要点

对于基于FilterServlet实现的简单架构项目,代码审计:

1)重心集中于找出所有的Filter分析其过滤规则,找出是否有做全局的安全过滤、敏感的URL地址是否有做权限校验并尝试绕过Filter过滤。

2)第二点则是找出所有的Servlet,分析Servlet的业务是否存在安全问题,如果存在安全问题是否可以利用?是否有权限访问?利用时是否被Filter过滤等问题,切勿看到ServletJSP中的漏洞点就妄下定论,不要忘了Servlet前面很有可能存在一个全局安全过滤的Filter

参考


文章作者: 司晓凯
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 司晓凯 !
  目录