SVG 文件容易受到十亿笑攻击。我们的网站允许用户上传/提交markdown文件,我们在渲染之前通过marked.js运行.md文件。现在降价中的图像被渲染为,
<img src="https://evilsite.com/badsvg.svg"/>
在网页中。浏览器将阻止任何<script>
inbadsvg.svg
执行。
现在evilsite.com
可以提供badsvg.svg
包含亿笑有效载荷的服务。这就是不同浏览器的处理方式,
Edge/IE - 不受影响,因为它对实体扩展有限制(您可以在控制台的日志中看到它)
Firefox - 似乎对实体扩展也有限制
Chrome - 没有限制,它会尝试扩展所有实体并最终耗尽内存,除了关闭/杀死标签别无选择
Chrome 上的这个相关错误被标记为“无法修复” - https://bugs.chromium.org/p/chromium/issues/detail?id=617891
这是客户端 DOS,该站点基本上对 Chrome 上的任何用户都无法使用。您建议我们如何防止此类攻击?禁止用户引用外部域的资源似乎是一种极端的措施。