【问题标题】:Content Security Policy violation on code review HTML违反代码审查 HTML 的内容安全策略
【发布时间】:2022-01-12 20:50:25
【问题描述】:

我正在为我的 rust 项目生成代码覆盖率,并尝试使用 publishHTML 将结果发布到 Jenkins。一切都很好,除了当我尝试查看 HTML 时,由于这个错误,CSS 没有加载:

Refused to load the stylesheet 'https://cdn.jsdelivr.net/npm/bulma@0.9.1/css/bulma.min.css' because it violates the following Content Security Policy directive: "default-src 'self'". Note that 'style-src-elem' was not explicitly set, so 'default-src' is used as a fallback.

我该如何解决这个问题?我怀疑我是第一个遇到这种情况的人。

我确实想过重写生成的 HTML 以使用本地样式表,但我在 Jenkins 工作区中遇到了奇怪的访问权限,我无法让它工作。

这是我用来生成报告的命令:

grcov . --binary-path workspaces -s . -t html --branch --ignore-not-existing -o ./code_coverage/

如果有任何关于如何解决此问题或如何更好地部署我的结果的建议,我将不胜感激。

【问题讨论】:

  • 样式表和可能大多数其他资源只允许从您的网络服务器提供页面的同一域/端口加载。那就不要使用 CDN;而是下载外部资源并将它们作为静态资产部署在您的网络服务器上。

标签: code-coverage content-security-policy


【解决方案1】:

默认CSP header in Jenkins 是:

sandbox; default-src 'none'; img-src 'self'; style-src 'self';

所以你必须将https://cdn.jsdelivr.net/npm/(或https://cdn.jsdelivr.net)添加到style-src指令中。

您可以在 Jenkins 启动后立即使用 post initialization script (init hook) 运行一些额外的东西。创建一个文件,例如$JENKINS_HOME/init.groovy.d/adjust-content-security-policy.groovy(或$JENKINS_HOME/init.groovy.d/ 目录中的任何.groovy 文件),其中包含一行:

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "sandbox; default-src 'self'; img-src 'self'; style-src 'self' https://cdn.jsdelivr.net/npm/")

它会在 Jenkins 启动后执行。

请注意请注意,'style-src-elem' 未明确设置,因此'default-src' 用作违规消息中的后备。这意味着默认的 Jenkins CSP 已更改并且 style-src 指令不存在。因此请检查$JENKINS_HOME/init.groovy.d/ 目录中的文件,也许您已经拥有一个带有 CSP 设置的文件。
最安全的方法是在浏览器控制台中查看您拥有的 CSP 标头,将 style-src 'self' https://cdn.jsdelivr.net/npm/" 添加到其中,然后将生成的 CSP 设置为 System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "...")。也许 Jenkins 文档只是落后于时代。

如果你在 Windows 上运行 Jenkins,有一种使用 jenkins.xml 文件的方法。添加属性:

-Dhudson.model.DirectoryBrowserSupport.CSP="sandbox; default-src 'self'; img-src 'self'; style-src 'self' https://cdn.jsdelivr.net/npm/"

<service><arguments>之前-jar,比重启服务。查看详情herehere

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-18
    • 2016-07-19
    • 2021-12-07
    • 1970-01-01
    • 2021-03-14
    • 2019-04-06
    • 2021-12-15
    相关资源
    最近更新 更多