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 图像
每月 421 次下载
用于 machin
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