Class XssHolder

java.lang.Object
tech.riemann.nif.web.xss.utils.XssHolder

public class XssHolder extends Object
XSS清理配置持有者

用于在当前线程中存储和获取XSS清理的配置信息

使用ThreadLocal存储XssClean对象,确保线程安全

主要功能: 1. 检查是否忽略输入XSS检查 2. 检查是否忽略输出XSS检查 3. 检查指定名称是否需要XSS检查 4. 设置和清除XSS清理配置

Author:
Kerbores(kerbores@riemann.tech)
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
    XSS清理配置类
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static boolean
    检查指定名称是否需要XSS检查
    static boolean
    检查是否忽略输入XSS检查
    static boolean
    当前线程是否处于一次 HTTP 请求处理上下文中
    static String[]
    获取需要XSS检查的名称列表
    static boolean
    检查是否忽略输出XSS检查
    static void
    清除当前线程的XSS清理配置
    static void
    set(boolean inputSkip, boolean outputSkip, String[] names)
    设置XSS清理配置

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • XssHolder

      public XssHolder()
  • Method Details

    • inRequest

      public static boolean inRequest()
      当前线程是否处于一次 HTTP 请求处理上下文中

      XssHolder 仅在 XssInterceptor.preHandle 中 set、afterCompletion 中 remove, 因此 TL 非空即代表当前线程正在处理一个 HTTP 请求。 XSS 检测/转义应仅在该上下文内生效,避免污染 Actuator、JMX、定时任务、内部反序列化 (如 Actuator endpoint 元数据反序列化)产生的海量误报日志

      Returns:
      true 表示处于 HTTP 请求上下文中
    • inputIgnore

      public static boolean inputIgnore()
      检查是否忽略输入XSS检查
      Returns:
      如果忽略输入XSS检查返回true,否则返回false
    • outputIgnore

      public static boolean outputIgnore()
      检查是否忽略输出XSS检查
      Returns:
      如果忽略输出XSS检查返回true,否则返回false
    • hasName

      public static boolean hasName(String name)
      检查指定名称是否需要XSS检查

      如果names数组为空,则所有名称都需要检查 否则,只有在names数组中的名称才需要检查

      Parameters:
      name - 要检查的名称
      Returns:
      如果需要检查返回true,否则返回false
    • names

      public static String[] names()
      获取需要XSS检查的名称列表
      Returns:
      需要XSS检查的名称数组,可能为空数组
    • set

      public static void set(boolean inputSkip, boolean outputSkip, String[] names)
      设置XSS清理配置

      P3: 参数名由 input/output 改为 inputSkip/outputSkip——原命名易误读为"是否检查输入", 实际语义是"是否忽略(跳过)输入/输出XSS检查"

      Parameters:
      inputSkip - 是否忽略(跳过)输入XSS检查
      outputSkip - 是否忽略(跳过)输出XSS检查
      names - 需要XSS检查的名称列表
    • remove

      public static void remove()
      清除当前线程的XSS清理配置