Class YmlSecurity

java.lang.Object
cloud.opencode.base.yml.security.YmlSecurity

public final class YmlSecurity extends Object
YML Security - Security utilities for YAML processing YML 安全 - YAML 处理的安全工具

Features | 主要功能:

  • Prevention of YAML bomb attacks (billion laughs) - 防止 YAML 炸弹攻击(十亿笑声)
  • Alias expansion limits - 别名展开限制
  • Document size limits - 文档大小限制
  • Safe type restrictions - 安全类型限制
  • Dangerous pattern detection and sanitization - 危险模式检测和净化

Usage Examples | 使用示例:

// Validate YAML before parsing
YmlSecurity.validate(yamlContent);

// Check for dangerous patterns
if (YmlSecurity.containsDangerousPatterns(yamlContent)) {
    throw new YmlSecurityException("Unsafe YAML content");
}

// Get safe config
YmlConfig safeConfig = YmlSecurity.createSafeConfig();

Security | 安全性:

  • Thread-safe: Yes (stateless utility class) - 线程安全: 是(无状态工具类)
  • Null-safe: Yes (null input is handled gracefully) - 空值安全: 是(空输入被优雅处理)
Since:
JDK 25, opencode-base-yml V1.0.0
Author:
Leon Soo www.LeonSoo.com
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    Default maximum alias count 默认最大别名数量
    static final int
    Default maximum nesting depth 默认最大嵌套深度
    static final long
    Default maximum document size (10 MB) 默认最大文档大小(10 MB)
  • Method Summary

    Modifier and Type
    Method
    Description
    static boolean
    Checks if YAML content contains dangerous patterns 检查 YAML 内容是否包含危险模式
    static int
    countAliases(String yamlContent)
    Counts aliases in YAML content 计算 YAML 内容中的别名数量
    static int
    countAnchors(String yamlContent)
    Counts anchors in YAML content 计算 YAML 内容中的锚点数量
    static YmlConfig
    Creates a safe YAML configuration 创建安全的 YAML 配置
    static YmlConfig
    createSafeConfig(long maxSize, int maxAliases)
    Creates a safe YAML configuration with custom limits 使用自定义限制创建安全的 YAML 配置
    static boolean
    isSafeType(String typeName)
    Checks if a type is safe for deserialization 检查类型是否可以安全反序列化
    static String
    sanitize(String yamlContent)
    Sanitizes YAML content by removing dangerous patterns 通过移除危险模式净化 YAML 内容
    static void
    validate(String yamlContent)
    Validates YAML content for security issues 验证 YAML 内容的安全问题
    static void
    validate(String yamlContent, long maxSize, int maxAliases)
    Validates YAML content with custom limits 使用自定义限制验证 YAML 内容

    Methods inherited from class Object

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

    • DEFAULT_MAX_DOCUMENT_SIZE

      public static final long DEFAULT_MAX_DOCUMENT_SIZE
      Default maximum document size (10 MB) 默认最大文档大小(10 MB)
      See Also:
    • DEFAULT_MAX_ALIASES

      public static final int DEFAULT_MAX_ALIASES
      Default maximum alias count 默认最大别名数量
      See Also:
    • DEFAULT_MAX_DEPTH

      public static final int DEFAULT_MAX_DEPTH
      Default maximum nesting depth 默认最大嵌套深度
      See Also:
  • Method Details

    • validate

      public static void validate(String yamlContent)
      Validates YAML content for security issues 验证 YAML 内容的安全问题
      Parameters:
      yamlContent - YAML content | YAML 内容
      Throws:
      YmlSecurityException - if security issue found | 如果发现安全问题
    • validate

      public static void validate(String yamlContent, long maxSize, int maxAliases)
      Validates YAML content with custom limits 使用自定义限制验证 YAML 内容
      Parameters:
      yamlContent - YAML content | YAML 内容
      maxSize - maximum document size | 最大文档大小
      maxAliases - maximum alias count | 最大别名数量
      Throws:
      YmlSecurityException - if security issue found | 如果发现安全问题
    • containsDangerousPatterns

      public static boolean containsDangerousPatterns(String yamlContent)
      Checks if YAML content contains dangerous patterns 检查 YAML 内容是否包含危险模式
      Parameters:
      yamlContent - YAML content | YAML 内容
      Returns:
      true if dangerous | 如果危险返回 true
    • countAliases

      public static int countAliases(String yamlContent)
      Counts aliases in YAML content 计算 YAML 内容中的别名数量
      Parameters:
      yamlContent - YAML content | YAML 内容
      Returns:
      alias count | 别名数量
    • countAnchors

      public static int countAnchors(String yamlContent)
      Counts anchors in YAML content 计算 YAML 内容中的锚点数量
      Parameters:
      yamlContent - YAML content | YAML 内容
      Returns:
      anchor count | 锚点数量
    • createSafeConfig

      public static YmlConfig createSafeConfig()
      Creates a safe YAML configuration 创建安全的 YAML 配置
      Returns:
      safe configuration | 安全配置
    • createSafeConfig

      public static YmlConfig createSafeConfig(long maxSize, int maxAliases)
      Creates a safe YAML configuration with custom limits 使用自定义限制创建安全的 YAML 配置
      Parameters:
      maxSize - maximum document size | 最大文档大小
      maxAliases - maximum alias count | 最大别名数量
      Returns:
      safe configuration | 安全配置
    • sanitize

      public static String sanitize(String yamlContent)
      Sanitizes YAML content by removing dangerous patterns 通过移除危险模式净化 YAML 内容
      Parameters:
      yamlContent - YAML content | YAML 内容
      Returns:
      sanitized content | 净化后的内容
    • isSafeType

      public static boolean isSafeType(String typeName)
      Checks if a type is safe for deserialization 检查类型是否可以安全反序列化
      Parameters:
      typeName - the type name | 类型名称
      Returns:
      true if safe | 如果安全返回 true