我试图在测试站点上使用新的内容安全策略(CSP)HTTP头。当我将CSP与Modernizer结合使用时,会出现CSP冲突错误。这是我正在使用的CSP策略:
内容安全策略:默认src“self”;脚本src'self'ajax.googleapis.com ajax.aspnetcdn.com;样式src‘self’;img src“自我”;字体src“self”;报表uri/WebResource.axd?cspReport=true
这些是来自Chrome浏览器控制台的错误:
Refused to apply inline style because it violates the following Content Security Policy directive: "style-src 'self'".
Either the 'unsafe-inline' keyword, a hash ('sha256-...'), or a nonce ('nonce-...') is required to enable inline execution.
window.Modernizr.injectElementWithStyles - modernizr-2.7.2.js:134
window.Modernizr.tests.touch - modernizr-2.7.2.js:457(anonymous function)
modernizr-2.7.2.js:949(anonymous function) - modernizr-2.7.2.js:1406
我在Github Modernizer站点上发现了以下解决方法。然而,这个变通方法是在三月份首次提出的,在谷歌上做一点小动作,我找不到解决这个问题的方法。
我知道我可以包含不安全的内联指令,该指令可以绕过此错误,但这也使不安全代码能够运行,并首先否定CSP的使用。有人有什么解决办法吗?
更新-什么是CSP
CSP是所有主要浏览器(包括Edge)都支持的HTTP标头。本质上,它是浏览器被允许用来呈现页面的内容的白名单。在这里了解更多信息,或者在这里和这里阅读Mozilla的CSP留档。
更新-帮助突出显示CSP
CSP现在可以在所有浏览器上使用(Edge增加了支持,耶!),这是web安全的一个巨大飞跃。对于那些有兴趣获得CSP更多第三方支持的人,请参见以下内容:
我找到了一个无需使用unsece-inline的修复方法。
您可以在一行中修改未最小化的Modernizer:
fakeBody = body || document.createElement('body');
皈依
fakeBody = document.createElement('body');
适用于IE9、Firefox和Chrome。
我怀疑除了重写Modernizer中使用内联代码或动态计算代码(适用于JS和CSS)的部分之外,没有其他解决方案。AngularJS ngCsp的经验在这里可能很有用。
CSP(内容安全策略) CSP(Content Security Policy) 即内容安全策略,主要目标是减少、并有效报告 XSS 攻击,其实质就是让开发者定制一份白名单,告诉浏览器允许加载、执行的外部资源。即使攻击者能够发现可从中注入脚本的漏洞,由于脚本不在白名单之列,浏览器也不会执行该脚本,从而达到了降低客户端遭受 XSS 攻击风险和影响的目的。 默认配置下,CSP 甚至不允许执行内联代码
为了缓解大量潜在的跨站点脚本问题,Chrome 浏览器的扩展程序整合了内容安全策略(CSP)的一般概念。这引入了一些相当严格的策略,这些策略将使扩展默认情况下更加安全,并为您提供创建和执行规则的能力,以管理扩展和应用程序可以加载和执行的内容类型。 通常,CSP 充当扩展程序加载或执行资源的阻止/允许列表机制。为扩展程序定义合理的策略使您可以仔细考虑扩展程序所需的资源,并要求浏览器确保这些是扩展程序
我想使用javascript访问一个网站。但我在控制台中遇到以下错误。 拒绝连接到'https://example.com'因为它违反了以下内容安全策略指令:“default src'self'”。请注意,未显式设置“connect src”,因此使用“default src”作为回退。 我在index.html中添加了以下meta标记, 元超文本传输协议-Equiv="内容-安全-策略"内容="
我正在从chargebee.com加载外部脚本,并在控制台中收到此错误消息: [仅报告]拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script src'nonce VVZ V0c=''self'https://maps.googleapis.com https://domain.chargebeestatic.com http://dgkxwewtzsnml.cloudfront.ne
开发人员控制台中出现了一系列错误: 拒绝计算字符串 拒绝执行内联脚本,因为它违反了以下内容安全策略指令 拒绝加载脚本 拒绝加载样式表 这是怎么回事?内容安全策略(CSP)是如何工作的?如何使用HTTP头? 具体来说,如何。。。 …允许多个源? …使用不同的指令? …使用多个指令? …处理端口? …处理不同的协议? …允许协议? …使用内联样式、脚本和标记
当我将图像上传到我的web应用程序中时,它显示以下错误 拒绝加载图像'