Class XssInterceptor
java.lang.Object
tech.riemann.nif.web.xss.interceptor.XssInterceptor
- All Implemented Interfaces:
org.springframework.web.servlet.AsyncHandlerInterceptor, org.springframework.web.servlet.HandlerInterceptor
public class XssInterceptor
extends Object
implements org.springframework.web.servlet.AsyncHandlerInterceptor
XSS拦截器
用于过滤或标记需要忽略XSS处理的请求
主要功能: 1. 在请求处理前检查是否需要忽略XSS处理 2. 支持通过注解标记需要忽略XSS处理的方法 3. 支持配置排除路径,对指定路径不进行XSS处理 4. 通过XssHolder设置XSS处理配置
- Author:
- Kerbores(kerbores@riemann.tech)
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidafterCompletion(@NonNull jakarta.servlet.http.HttpServletRequest request, @NonNull jakarta.servlet.http.HttpServletResponse response, @NonNull Object handler, @Nullable Exception ex) 请求处理完成后的清理方法(M17)booleanpreHandle(@NonNull jakarta.servlet.http.HttpServletRequest request, @NonNull jakarta.servlet.http.HttpServletResponse response, @NonNull Object handler) 请求处理前的拦截方法Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.web.servlet.AsyncHandlerInterceptor
afterConcurrentHandlingStartedMethods inherited from interface org.springframework.web.servlet.HandlerInterceptor
postHandle
-
Constructor Details
-
XssInterceptor
public XssInterceptor()
-
-
Method Details
-
preHandle
public boolean preHandle(@NonNull jakarta.servlet.http.HttpServletRequest request, @NonNull jakarta.servlet.http.HttpServletResponse response, @NonNull Object handler) throws Exception 请求处理前的拦截方法检查是否需要忽略XSS处理,并设置相应的XSS处理配置
- Specified by:
preHandlein interfaceorg.springframework.web.servlet.HandlerInterceptor- Parameters:
request- HTTP请求对象response- HTTP响应对象handler- 处理请求的处理器- Returns:
- 始终返回true,表示继续处理请求
- Throws:
Exception- 处理过程中发生异常
-
afterCompletion
public void afterCompletion(@NonNull jakarta.servlet.http.HttpServletRequest request, @NonNull jakarta.servlet.http.HttpServletResponse response, @NonNull Object handler, @Nullable Exception ex) 请求处理完成后的清理方法(M17)清理 ThreadLocal(XssHolder)——preHandle 设置的 XSS 配置若不清理, 线程池复用线程时上一个请求的忽略配置会残留,影响下一个请求
正常/异常/异步分派完成后均会执行(AsyncHandlerInterceptor 语义)
- Specified by:
afterCompletionin interfaceorg.springframework.web.servlet.HandlerInterceptor- Parameters:
request- HTTP请求对象response- HTTP响应对象handler- 处理请求的处理器ex- 处理过程中发生的异常
-