Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
svg-sanitizer — 用于清理 SVG 文件的 Java 库,可剥离 JavaScript、内联事件处理器和 script 标签,同时阻止外部资源加载以防止 XSS。 | Kitploit
工具/GitHubGitHub/borewit/svg-sanitizer
防御工具静态分析代码分析Web安全实用工具与框架
GitHubborewit/svg-sanitizer

svg-sanitizer

用于清理 SVG 文件的 Java 库,可剥离 JavaScript、内联事件处理器和 script 标签,同时阻止外部资源加载以防止 XSS。

查看仓库
2212天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CI Maven Central javadoc

SVG Sanitizer

SVG Sanitizer 是一个 Java 库,旨在清理 SVG 文件,通过移除潜在危险的 JavaScript、阻止外部资源加载,并防止 XSS(跨站脚本攻击) 漏洞。它可用于确保 SVG 文件在各种应用中安全使用,包括 Web 环境。

特性

  • 从 SVG 文件中移除 JavaScript,包括内联事件处理器和 <script> 标签。
  • 阻止加载外部资源,包括指向外部 URL 的 href 和 xlink:href 属性。
  • 通过清理危险元素和属性来防止 XSS 漏洞。
  • 可作为库轻松集成到 Java 项目中。
  • 能够处理超大的 SVG 文件,因为 SVG 是以流式方式清理的

用法

Maven 依赖

要在你的 Java 项目中使用 SVG Sanitizer,请引入 io.github.borewit:svg-sanitizer Maven 依赖。

public class SVGSanitizerExample {
  public static void main(String[] args) {
    String dirtySvgContent = """
      <svg xmlns="http://www.w3.org/2000/svg" width="400" height="400" viewBox="0 0 124 124" fill="none">
        <rect width="124" height="124" rx="24" fill="#000000"/>
          <script type="text/javascript">
            alert(0x539);
         </script>
      </svg>""";
    try {
      String sanitizedSvg = SVGSanitizer.sanitize(dirtySvgContent);
      System.out.println(sanitizedSvg);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

这将输出经过清理的 SVG:

<svg xmlns="http://www.w3.org/2000/svg" fill="none" height="400" viewBox="0 0 124 124" width="400">
    <rect fill="#000000" height="124" rx="24" width="124"/>
</svg>

从 InputStream 净化到 OutputStream:

import java.io.*;

public class SVGSanitizerExample {
  public static void main(String[] args) throws Exception {
    File inputFile = new File("unsafe.svg");
    File outputFile = new File("sanitized.svg");

    try (InputStream inputStream = new FileInputStream(inputFile)) {
         try (OutputStream outputStream = new FileOutputStream(outputFile)) {
            SVGSanitizer.sanitize(inputStream, outputStream);
          }
    }

    System.out.println("Sanitized SVG has been saved to " + outputFile.getAbsolutePath());
  }
}

从 InputStream 清理到 InputStream:

import java.io.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;

public class SVGSanitizerExample {
  public static void main(String[] args) throws Exception {
    File inputFile = new File("unsafe.svg"); // Potentially unsafe SVG file

    try (InputStream inputStream = new FileInputStream(inputFile);
         InputStream sanitizedStream = SVGSanitizer.sanitize(inputStream)) {

      // Pass the sanitized stream to an XML parser (without converting it to a String)
      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
      DocumentBuilder builder = factory.newDocumentBuilder();
      Document doc = builder.parse(sanitizedStream);

      System.out.println("SVG file successfully parsed after sanitization.");
    }
  }
}

可用方法

public static String sanitize(String svgContent)

仅当将整个 SVG 加载到内存中不会造成问题时,才应使用此方法。

public static void sanitize(InputStream inputStream, OutputStream outputStream)

将清理后的 SVG 写入给定的 outputStream

public static InputStream sanitize(InputStream inputStream)

充当过滤器,返回一个经过清理的 InputStream,其中包含净化后的 SVG。

安全注意事项

用户上传的 SVG 可能包含恶意内容,这些内容可能会在浏览器上下文中被执行。净化 SVG 是重要的一步,但应与其他措施结合使用以实现全面防护。 有关更全面的概述,请参阅 SVG 安全最佳实践。

许可证

本项目采用 MIT 许可证 授权。

下载工具