我编写了一个程序,生成一个带有以下标头的 html 文件:
但我没有iframe
根本没有,更不用说在沙箱里了
当我在浏览器(托管在 Jenkins 服务器上)中打开页面时,我看不到 css。
这些是错误(安全策略)
我看过一些关于堆栈溢出的帖子,说<meta>
应该是这样的:
<meta http-equiv="content-type" content="text/html; charset=utf-8 ;">
<meta http-equiv="Content-Security-Policy" content="script-src 'self' http://onlineerp.solution.quebec 'unsafe-inline' 'unsafe-eval'; style-src 'self' maxcdn.bootstrapcdn.com">
但正如你在我的打印屏幕中看到的那样,这没有帮助
任何想法,我该如何解决这个问题?
您正在从 Jenkins 提供 HTML 页面,因此 Jenkins 控制响应标头,而不是您的内容。最近的安全修复 https://wiki.jenkins-ci.org/display/SECURITY/Jenkins+Security+Advisory+2015-12-09在 Jenkins 中施加了严格的默认值内容安全政策 http://content-security-policy.com。您应该能够在响应标头中看到 Jenkins 插入的 Content-Security-Policy 标头。
一种解决方案是放宽 Jenkins 配置,请参阅配置内容安全策略 wiki 页面 https://wiki.jenkins-ci.org/display/JENKINS/Configuring+Content+Security+Policy详情:
Jenkins发送的CSP header可以通过设置系统属性来修改hudson.model.DirectoryBrowserSupport.CSP:
如果它的值为空字符串,例如java -Dhudson.model.DirectoryBrowserSupport.CSP= -jar jenkins.war
那么标头将根本不会被发送。
(警告!)这可能非常不安全,只能在检查整体安全设置后使用。
您可以使用以下命令尝试不同的设置詹金斯脚本控制台 https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+Script+Console。要启用来自外部站点的 CSS 和图像,您可以使用以下内容:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "sandbox; default-src 'self'; img-src '*'; style-src '*' 'unsafe-inline';")
另一种解决方案是将生成的页面发布(部署)到另一台服务器上,您可以在其中控制内容安全策略。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)