Html 詹金斯内容安全策略
我对詹金斯的内容安全政策感到困惑 我知道这些网站:Html 詹金斯内容安全策略,html,css,jenkins,content-security-policy,Html,Css,Jenkins,Content Security Policy,我对詹金斯的内容安全政策感到困惑 我知道这些网站: 我有一个html页面显示通过詹金斯三叶草插件。此html页面使用内联样式,例如: <div class='greenbar' style='width:58px'> div元素使progressbar可视化。 使用默认Jenkins CSP配置会导致以下结果: 我想要的结果如下所示: 我试图放松CSP规则,添加不同级别(self、unsafe inline等)的不同参数组合(script src、style src
<div class='greenbar' style='width:58px'>
div元素使progressbar可视化。
使用默认Jenkins CSP配置会导致以下结果:
我想要的结果如下所示:
我试图放松CSP规则,添加不同级别(self、unsafe inline等)的不同参数组合(script src、style src),但没有任何效果
所以我现在的问题是:
-Dhudson.model.DirectoryBrowserSupport.CSP=“default src'self”
在jenkins.xml文件中。然后发生以下错误:
拒绝应用内联样式,因为它违反以下要求
内容安全策略指令:“默认src‘self’”
“不安全内联”关键字、哈希('sha256-')或nonce
('nonce-…')是启用内联执行所必需的
未显式设置“style src”,因此将“default src”用作
撤退
2.试试看
-Dhudson.model.DirectoryBrowserSupport.CSP=“default src'self”;在jenkins.xml文件中设置src'self'
。然后发生以下错误:
拒绝应用内联样式,因为它违反以下要求
内容安全策略指令:“样式src‘self’”。要么
“不安全内联”关键字,哈希
('sha256-'),或临时值
启用内联执行需要('nonce-…')
我明白这个尝试不能解决我的问题,因为默认的src包括样式src
3。试试看
jenkins.xml文件中的-Dhudson.model.DirectoryBrowserSupport.CSP=“default src'self”;style src'safe inline'
。然后发生以下错误:
拒绝加载样式表
s://jenkins/andsomedir/stylesheet.css[its]https://... 不允许发布超过两个链接:(]
因为它违反了以下内容安全策略指令:
“样式src‘不安全的内联’”
在进行实验时,我建议使用脚本控制台动态调整CSP参数,如页面上所述。(Jenkins wiki页面中还有另一个说明,表明您可能需要强制重新加载页面以查看新设置。) 为了同时使用内联样式和本地样式表,您需要添加self和unsafe内联: 根据progressbar的操作方式,您可能还需要以相同的方式调整“script src”
一旦您找到一个有效的设置,您可以调整Jenkins启动脚本以添加CSP参数定义。只是为了明确在Jenkins上永久设置此CSP属性 如果您在Ubuntu上运行Jenkins:
$vim/etc/default/jenkins
JAVA\u ARGS
的行,并添加如下CSP策略:JAVA\u ARGS=“-Djava.awt.headless=true-Dhudson.model.DirectoryBrowserSupport.CSP=\”默认src“self”不安全内联“不安全eval”;img src数据:;\”
$vim/etc/sysconfig/jenkins
JENKINS\u JAVA\u OPTIONS
的行,并添加如下CSP策略:JENKINS\u JAVA\u OPTIONS=“-Djava.awt.headless=true-Dhudson.model.DirectoryBrowserSupport.CSP=\”默认src“自我”不安全内联“不安全评估”;img src数据:;\”
$sudo服务重新启动
或在浏览器中http://localhost:8080/safeRestart
为@Kirill的答案添加更多内容
如果jenkins部署在tomcat
容器中,请在setenv.sh文件中设置CATALINA\u OPTS
环境值(位于${CATALINA\u BASE}/bin
文件夹中),如下所示:-
export CATALINA_OPTS="-Xmx2048m -Xms2048m -XX:MaxNewSize=768m -XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${CATALINA_BASE}/logs/java.hprof -XX:ParallelGCThreads=2 -XX:-UseConcMarkSweepGC -Dcom.sun.management.jmxremote -Dhudson.model.DirectoryBrowserSupport.CSP=\"\"
或
更改上述文件后,重新启动tomcat
。它对我来说很有吸引力。希望它能有所帮助:)
注意:-CSP仅适用于HTML publisher、maven plugin等插件。它不适用于电子邮件HTML文件。尝试共享我的过程时,我始终遵循这些解决方法之一。但是,您需要注意安全限制,因为应用这些修复可能会不安全
临时修复:
转到Jenkins控制台,根据您想要的CSP策略类型应用以下命令
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "sandbox allow-scripts; default-src 'self'; style-src 'self' 'unsafe-inline'; script-src * 'unsafe-inline';")
此解决方案旨在进行临时测试或开发环境
如果要永久更改它,请在运行应用程序时将其添加到java命令中:
-Dhudson.model.DirectoryBrowserSupport.CSP="sandbox allow-scripts; default-src 'self'; style-src 'self' 'unsafe-inline';"
最后,我强烈建议您阅读以下文章:
詹金斯官方文件
临时或永久重置CSP规则的变通方法:
我也有类似的问题。下面的解决方案对我很有效
java -Dhudson.model.DirectoryBrowserSupport.CSP="sandbox allow-scripts allow-popups allow-popups-to-escape-sandbox; style-src 'unsafe-inline' *;" -Dsvnkit.http.sslProtocols=TLSv1 -jar C:/server/Jenkins.war --httpPort=8280
以下属性适用于我。以下属性允许所有外部服务器
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src * 'unsafe-inline' 'unsafe-eval'; script-src * 'unsafe-inline' 'unsafe-eval'; connect-src * 'unsafe-inline'; img-src * data: blob: 'unsafe-inline'; frame-src *; style-src * 'unsafe-inline';")
可以使用内联样式或Jenkins服务器上的文件中的样式。听起来您的思路是正确的,但您没有发布您所尝试的内容(是否使用脚本控制台?键入了什么?您将CSP参数设置为什么值?),所以很难指出哪里出了问题。感谢您的回答。更新了我的帖子。如果您不确定如何永久应用这些设置(因为在Jenkins重新启动后通过脚本控制台进行的更改将被丢弃),您可以将它们附加到/etc/default/Jenkins
中的JAVA_参数中:<
java -Dhudson.model.DirectoryBrowserSupport.CSP="sandbox allow-scripts allow-popups allow-popups-to-escape-sandbox; style-src 'unsafe-inline' *;" -Dsvnkit.http.sslProtocols=TLSv1 -jar C:/server/Jenkins.war --httpPort=8280
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src * 'unsafe-inline' 'unsafe-eval'; script-src * 'unsafe-inline' 'unsafe-eval'; connect-src * 'unsafe-inline'; img-src * data: blob: 'unsafe-inline'; frame-src *; style-src * 'unsafe-inline';")