RASP内置了javax.servlet.Servlet
和javax.servlet.Filter
接口的Hook方法,Servlet容器中的任何Servlet或Filter在被调用之前都被RASP插入了劫持代码。RASP通过劫持javax.servlet.Servlet
的service
方法和javax.servlet.Filter
类的doFilter
方法不但可以获取到原始的HttpServletRequest
和HttpServletResponse
对象,还可以控制Servlet和Filter的程序执行逻辑,从而让RASP能够控制整个Http请求的生命周期。
RASP劫持Servlet/Filter对象原理:
RASPHttpRequestContextManager:
当Servlet或Filter请求结束后会调用RASPHttpRequestContextManager#finishHook
清理RASP Context中的缓存数据。