0x01 区别表

操作 Filter Servlet
接口 继承并实现Filter接口 继承并实现Servlet接口
常用的方法 init()
doFilter()
destroy()
init()
service()
destroy()
getServletConfig()
getServletInfo()
doGet()
doHead()
doPost()
doPut()
doDelete()
doOptions()
doTrace()
注册方式 配置WEB-INF/web.xml或注解@WebFilter 配置WEB-INF/web.xml或注解@WebServlet
其它相似处 doFilter()方法,可以处理来自Http的请求
并且可以直接操控request与response对象
service()方法,可以处理来自Http的请求
并且可以直接操控request与response对象
功能 Java Web请求资源的拦截与过滤 主要处理客户端请求并将其结果返回给客户端
一般用途 通常配置在MVC/Servlet/JSP请求前面
常用于后端权限控制或是进行统一的Http请求参数过滤(如:xss/sql注入等攻击检测处理)
常用来处理后端业务请求

0x02 小结

对于这种基于Filter和Servlet实现的简单架构项目,那么代码审计的重心
第一点,找出所有的Filter,然后进行如下分析

  1. 是否有做全局的安全过滤?(例如:全局不能出现单双引号类似这种,出现就直接拦截)
  2. 敏感URL地址是否有权限校验?有的话尝试绕过该Filter过滤

第二点,找出所有的Servlet与JSP然后进行如下分析

  1. 分析Servlet/JSP的业务是否存在安全问题
  2. 存在问题的话,是否可有权限访问?
  3. 利用时是否被Filter安全过滤
  4. 等等问题

总结: 先看Filter让心里有个底,知道是否有全局过滤之类的以后,然后在分析Servlet/JSP的业务是否存在安全问题