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,然后进行如下分析
- 是否有做全局的安全过滤?(例如:全局不能出现单双引号类似这种,出现就直接拦截)
- 敏感URL地址是否有权限校验?有的话尝试绕过该Filter过滤
第二点,找出所有的Servlet与JSP然后进行如下分析
- 分析Servlet/JSP的业务是否存在安全问题
- 存在问题的话,是否可有权限访问?
- 利用时是否被Filter安全过滤
- 等等问题
总结: 先看Filter让心里有个底,知道是否有全局过滤之类的以后,然后在分析Servlet/JSP的业务是否存在安全问题