限制 SVG 中的 JS

信息安全 xss 图书馆 svg
2021-08-15 21:56:01

有谁知道防止 JS 在 SVG 内部运行或从 SVG 中剥离 JS 的方法?在我的用例中,我更愿意将图像保留为 SVG,而不是将其转换为 JPG。我考虑过去除脚本标签和属性,但我更愿意避免使用黑名单方法。或者,我已经研究过对所有属性和标签进行白名单方法,但列表非常庞大。关于如何解决这个问题的任何想法?

2个回答

有谁知道防止 JS 在 SVG 内部运行的方法

如果您将 SVG 作为图像嵌入,则保证不会运行任何包含的 JS:

<img src="https://example.com/dangerous.svg">

作为副作用,这也会阻止 SVG 加载任何外部资源。(另请参阅:SVG 作为图像

如果您觉得花哨,iframe 沙箱也会阻止任何脚本代码执行:

<iframe sandbox src="https://example.com/dangerous.svg"></iframe>

请注意,如果您托管的是用户提供的 SVG,请确保用户不能直接在浏览器中查看它们(通过输入https://yoursite.example/user-images/dangerous.svgURL),因为这无论如何都会触发 XSS。相反,您需要将不受信任的文件作为附件提供。(另请参阅:存储和重放用户提供的 mime 类型是否安全?

使用可以解析和转换 SVG 并允许您删除脚本的现有库/软件工具。安全方面的一项重要规则是,如果可以避免重新发明轮子,就不要重新发明轮子。

使用哪个库超出了本网站的范围,但您可以尝试在http://stackoverflow.com/https://softwarerecs.stackexchange.com/上查看(并可能询问) ,特别是在标签svg下.

像往常一样,在提问之前阅读(并注意)网站的问题指南(例如 ,问题需要什么才能包含“足够的信息”?)。