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