#svg #security #filter #sanitizer #xss #purify

bin+lib svg-hush

从 SVG 文件中移除脚本和其他可滥用功能

5 个版本

0.9.4 2023 年 8 月 29 日
0.9.3 2023 年 8 月 21 日
0.9.2 2023 年 5 月 11 日
0.9.1 2022 年 9 月 22 日
0.9.0 2022 年 7 月 27 日

#626 in 图像

Download history 54/week @ 2024-04-05 59/week @ 2024-04-12 43/week @ 2024-04-19 35/week @ 2024-04-26 94/week @ 2024-05-03 176/week @ 2024-05-10 89/week @ 2024-05-17 102/week @ 2024-05-24 36/week @ 2024-05-31 100/week @ 2024-06-07 78/week @ 2024-06-14 28/week @ 2024-06-21 93/week @ 2024-06-28 32/week @ 2024-07-05 182/week @ 2024-07-12 104/week @ 2024-07-19

每月 421 次下载
用于 machin

Apache-2.0 OR MIT

47KB
875

svg-hush

此工具的目的是使任意 SVG 文件尽可能无害和安全,以便在其他常见的 Web 文件格式中作为图像提供服务。SVG 文件不仅仅是图像,它们是具有完整访问所有 HTML 和 JavaScript 功能的文档。此工具过滤 SVG 文件以删除任何潜在风险功能的使用。

  • 移除脚本。防止 SVG 文件被用于跨站脚本攻击。尽管浏览器不允许在 <img> 中使用脚本,但它们在将 SVG 文件直接作为顶级文档打开时允许脚本。

  • 移除指向其他域上文档的超链接。使 SVG 文件对 SEO 垃圾邮件和钓鱼攻击不那么有吸引力。

  • 移除对跨源资源的引用。阻止第三方跟踪谁正在查看图像。

此工具会删除其允许列表之外的任何元素和属性,并过滤所有 URL 以确保它们都是同源的(不带主机名的路径)。这可能会破坏某些 SVG 图像。请提交错误报告,当您发现被过滤得太严厉的图像时!

此工具可能会通过从其中删除不必要的垃圾数据来减小 SVG 文件的大小,但它并不是用作 SVG 优化器。可以安全地将 svg-hush 与 SVG 优化工具结合使用。

清理与 CSP 的比较

尽管有此过滤,最好还是使用限制性的 Content-Security-Policy 来提供 SVG 图像。此工具是针对可能不支持、丢失或绕过 CSP 标头的情况的深度防御措施(例如,由于服务器/CMS 配置错误或未转发标头的 ServiceWorker)。

已知限制

  • 不支持旧版文本编码。支持UTF-8、UTF-16和latin1。
  • DOCTYPE引用外部DTD文件的格式不允许。支持内部子集。
  • 不支持宽松的SVG-in-HTML语法方言。SVG文档必须是格式良好的XML,并使用SVG命名空间。

依赖项

~2MB
~59K SLoC