我们有一个 Web 服务,登录用户可以在其中创建网页内容并为他们的页面编写自定义 CSS。所有 HTML 都经过白名单解析器,并且不允许任何可执行内容。所有的 CSS 都通过一个验证所有 CSS 的白名单解析器。
以这种方式使用时,浏览器似乎不会执行嵌入在 SVG 文件中的JavaScript
selector
{
filter: url("data:image/svg+xml;base64,...#filter");
}
但是,我找不到说明浏览器不应在该数据 URL 中运行 JavaScript 的规范。
允许在属性中使用data:
URL是否安全?url()
filter
我主要考虑 XSS 攻击,但我显然也想了解其他漏洞。
预期的用例是例如允许自定义内容过滤到主题颜色,因此不需要在 SVG 中允许 JS。我基本上想知道我是否可以安全地添加规则,说明在属性中使用前缀data:image/svg+xml
是 CSS 函数的安全值。url
filter
我也知道Content-Security-Policy
需要包含data:
在 中,default-src
因为规范未能更好地定义 SVG 处理。结果,我也需要script-src 'self'; object-src 'self'
.