我试图使reCAPTCHA与严格的内容安全策略一起工作。这是我的基本版本,可以正常工作:
HTML
<script src='//www.google.com/recaptcha/api.js' async defer></script>
HTTP头处理模块
Content-Security-Policy: default-src 'self'; script-src 'self' www.google.com www.gstatic.com; style-src 'self' https: 'unsafe-inline'; frame-src www.google.com;
但是,我想去掉样式src
部分中的不安全内联
。文件中写道:
我们建议使用CSP3中记录的基于nonce的方法。确保在reCAPTCHA api中包含nonce。js脚本标记,我们将处理其余部分。
但我不能让它工作。。。这就是我所尝试的:
HTML
<script src='//www.google.com/recaptcha/api.js' nonce="{NONCE}" async defer></script>
HTTP头处理模块
Content-Security-Policy: default-src 'self'; script-src 'self' https: 'nonce-{NONCE}'; style-src 'self' 'nonce-{NONCE}'; child-src www.google.com;
这就是我在Chrome 53上遇到的错误:
拒绝应用内联样式,因为它违反了以下内容安全策略指令:“style src'self'https:'nonce-{nonce}”。启用内联执行需要'unsafe inline'关键字、哈希('sha256-MammJ3J TGIHdHxYsGLjD6DzRU0ZmxXKZ2DvTePAF0o=')或nonce('nonce-…')。
我错过了什么?
在网上使用下面的代码。ASp.NET的配置文件。Net应用程序。
<child-src>
<add source="www.google.com"/>
我不相信reCAPTCHA支持CSP而不允许内联样式。我在reCAPTCHA Github存储库中找到了这个公开的问题。
此使用CSP的reCAPTCHA示例页面之所以有效,是因为它没有定义样式src
或默认src
。检查页面的DOM会发现插入的div:
<div class="g-recaptcha" data-sitekey="6LdOLRgTAAAAAPYECt9KLIL_LLwOuuuHAUw7QUTm">
<div style="width: 304px; height: 78px;">
<div>
<iframe src="https://www.google.com/recaptcha/api2/anchor?k=6LdOLRgTAAAAAPYECt9KLIL_LLwOuuuHAUw7QUTm&co=aHR0cHM6Ly9jc3AtZXhwZXJpbWVudHMuYXBwc3BvdC5jb206NDQz&hl=en&v=r20160926121436&size=normal&cb=g72al0v10dxg" title="recaptcha widget" width="304" height="78" role="presentation" frameborder="0" scrolling="no" name="undefined"></iframe>
</div>
<textarea id="g-recaptcha-response" name="g-recaptcha-response" class="g-recaptcha-response" style="width: 250px; height: 40px; border: 1px solid #c1c1c1; margin: 10px 25px; padding: 0px; resize: none; display: none; "></textarea>
</div>
</div>
textarea
的内联样式的计算结果为MammJ3J TGIHdHxYsGLjD6DzRU0ZmxXKZ2DvTePAF0o=
,具体取决于:
echo -n "width: 250px; height: 40px; border: 1px solid #c1c1c1; margin: 10px 25px; padding: 0px; resize: none; display: none; " | openssl dgst -sha256 -binary | base64
这与错误消息中指示的哈希匹配。但是,在style src
中包含散列对于Chrome中的内联样式不起作用。看来这将得到不安全散列属性的支持,据我所知,这些属性还没有发布到Chrome版本中。
不管怎样,添加哈希可以让它在火狐中工作。
reCAPTCHA服务已更新,因此不再需要style src“unsafe inline”
。以下HTML和HTTP标题应适用于此已解决问题:
HTML:
<script src="https://www.google.com/recaptcha/api.js?render=site-key" nonce="{NONCE}"></script>
HTTP标头:
Content-Security-Policy: default-src 'self'; script-src 'nonce-{NONCE}'; img-src www.gstatic.com; frame-src www.google.com; object-src 'none'; base-uri 'none';
内容安全策略 CSP(Content Security Policy)即内容安全策略,主要目标是减少、并有效报告 XSS 攻击,其实质就是让开发者定制一份白名单,告诉浏览器允许加载、执行的外部资源。即使攻击者能够发现可从中注入脚本的漏洞,由于脚本不在白名单之列,浏览器也不会执行该脚本,从而降低客户端遭受 XSS 攻击风险。 默认配置下,CSP 甚至不允许执行内联代码 (<script> 块内容,内
CSP(内容安全策略) CSP(Content Security Policy) 即内容安全策略,主要目标是减少、并有效报告 XSS 攻击,其实质就是让开发者定制一份白名单,告诉浏览器允许加载、执行的外部资源。即使攻击者能够发现可从中注入脚本的漏洞,由于脚本不在白名单之列,浏览器也不会执行该脚本,从而达到了降低客户端遭受 XSS 攻击风险和影响的目的。 默认配置下,CSP 甚至不允许执行内联代码
问题内容: 我对Jenkins内容安全政策感到困惑。 我知道这些网站: 配置内容安全策略 内容安全政策参考 我有一个通过Jenkins Clover插件显示的html页面。该html页面使用嵌入式样式,例如: div元素可视化进度条。使用默认的Jenkins CSP配置会导致以下结果: Progressbar_FAIL 我想要的结果如下所示: Progressbar_WORKS 我试图放宽CSP规
为了缓解大量潜在的跨站点脚本问题,Chrome 浏览器的扩展程序整合了内容安全策略(CSP)的一般概念。这引入了一些相当严格的策略,这些策略将使扩展默认情况下更加安全,并为您提供创建和执行规则的能力,以管理扩展和应用程序可以加载和执行的内容类型。 通常,CSP 充当扩展程序加载或执行资源的阻止/允许列表机制。为扩展程序定义合理的策略使您可以仔细考虑扩展程序所需的资源,并要求浏览器确保这些是扩展程序
在我的页面上,我给出了层次结构: 内部框架带有给定的标题 看起来一切都是正确的,但我在chrome中遇到了这样的错误(ff中也有错误): 拒绝展示https://app.domain.training/path'在帧中,因为祖先违反以下内容安全策略指令:“帧祖先app.domain.training proxy.domain.training domain.training*.domain.tra
所以我一直在尝试使用一个谷歌可编程搜索引擎脚本,但我在元标记方面遇到了问题。我在my中包含的meta标记如下所示: 但是,我仍然收到一个错误,告诉我它拒绝加载脚本,因为它违反了“内容安全策略指令:“script src'self'” 我想知道它是否从其他地方继承了一些设置,因为它不接受我正在设置的新脚本src,但是如果我将其设置为“无”,它会接受新脚本src。 顺便说一下,我对html非常陌生,所
我一直在为一个小网站试用Hanami。它在生产中有非常严格的默认安全设置。以下是服务器响应标题: 导致: 我的内容安全策略标头中的某些内容不允许ReCaptcha工作。请记住,它在localhost的开发中运行良好,具有以下响应头: 下面是为生产定义CSP的块: 看起来我需要添加一个权限来加载脚本。我遵循谷歌自己的CSP规则。 这里有什么问题? 编辑:看起来安全策略不允许我加载脚本,因为页面中缺少
问题内容: 我在开发人员控制台中收到很多错误: 拒绝评估字符串 拒绝执行内联脚本,因为它违反了以下内容安全策略指令 拒绝加载脚本 拒绝加载样式表 这是怎么回事?内容安全策略如何工作?如何使用HTTP标头? 具体来说,如何… …允许多个来源? …使用不同的指令? …使用多个指令? …处理端口? …处理不同的协议? …允许的协议? …使用内联样式,脚本和标签以及? …允许吗? 最后: 到底是什么意思?