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
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    afterCompletion(@NonNull jakarta.servlet.http.HttpServletRequest request, @NonNull jakarta.servlet.http.HttpServletResponse response, @NonNull Object handler, @Nullable Exception ex)
    请求处理完成后的清理方法(M17)
    boolean
    preHandle(@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, wait

    Methods inherited from interface org.springframework.web.servlet.AsyncHandlerInterceptor

    afterConcurrentHandlingStarted

    Methods 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:
      preHandle in interface org.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:
      afterCompletion in interface org.springframework.web.servlet.HandlerInterceptor
      Parameters:
      request - HTTP请求对象
      response - HTTP响应对象
      handler - 处理请求的处理器
      ex - 处理过程中发生的异常