【问题标题】:Content-Security-Policy (CSP): how to allow svg image in objectContent-Security-Policy (CSP):如何在对象中允许 svg 图像
【发布时间】:2018-03-06 14:57:22
【问题描述】:

我正在使用在自身内部添加 SVG 图像的 js 插件。 我已将 CSP 策略添加到我的网站,但我无法将其配置为允许插件代码。

它的代码如下:

label=$("<object style='height:10px; width:10px;' type='image/svg+xml' data='data:image/svg+xml;charset=UTF-8," +
"<svg xmlns=\"http://www.w3.org/2000/svg\">" +
"<rect x=\"0\" y=\"0\" some parameters/>"+
"<text>SomeText</text></svg>'></object>");
el.html(label)

我正在寻找一种允许在对象中呈现 SVG 图像的配置。 我从那里尝试了不同的选择 - CSP: object-src

但我总是得到类似下一个的错误:

Refused to load plugin data from 'data:image/svg+xml;charset=UTF-8, my svg here' because it violates the following Content Security Policy directive: "object-src 'unsafe-eval'".

这种情况下如何正确配置CSP?

【问题讨论】:

    标签: javascript svg configuration content-security-policy data-uri


    【解决方案1】:

    该 SVG 图像由 data: URL 提供,因此必须更新您的 CSP 政策以允许这样做。

    您没有显示您当前的策略或设置它的位置,但假设您使用Content-Security-Policy 标头进行设置并且它当前具有object-src 'unsafe-eval',那么您可以通过以下方式允许data: URL将政策的该部分更新为如下所示:

    Content-Security-Policy: object-src data: 'unsafe-eval'
    

    这仅在 Content-Security-Policy 标头中显示了当前策略的相关部分。无论您当前在该标头值中具有什么其他指令,您都希望保持原样。

    【讨论】:

    • 应该注意的是,这会打开页面,以便使用 object-src 数据对页面上的任何项目进行攻击。如果您的目标是安全,您最好使用尝试执行的脚本的 sha 哈希,而不是打开这个漏洞。
    • @Chris 进行 SHA 哈希以包含在 CSS 中的机制是什么?如果原件是background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2020%2020%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Ccircle%20fill%3D%22none%22%20stroke%3D%22%23e5e5e5%22%20stroke-width%3D%222%22%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%227%22%20%2F%3E%0A%3C%2Fsvg%3E%0A");,我是否应该对那里的文字进行SHA?
    猜你喜欢
    • 2016-11-01
    • 1970-01-01
    • 2022-01-03
    • 2017-08-05
    • 2018-09-05
    • 1970-01-01
    • 2019-09-05
    • 2019-04-17
    • 2021-06-02
    相关资源
    最近更新 更多