谷歌recaptcha v2中的内容安全政策问题

问题描述 投票:0回答:1

我搜索了很多关于SO的问题。但没有解决我的问题。我在asp.net mvc5应用程序中使用谷歌recaptcha v2。它在谷歌浏览器中工作正常。但它在firefox和edge浏览器中显示出一些错误。我怀疑这是与内容安全策略标题相关的内容。

Firefox中的错误

Content Security Policy: Ignoring “'unsafe-inline'” within script-src: ‘strict-dynamic’ specified

Content Security Policy: Ignoring “https:” within script-src: ‘strict-dynamic’ specified

Content Security Policy: Ignoring “http:” within script-src: ‘strict-dynamic’ specified

Edge中的错误

通过允许脚本和相同的原始访问可能会破坏沙盒iframe的安全性。

由于这个错误,recaptcha无法正常工作,因为它每次都会超时

我试图在web.config中添加这样的csp头文件

<system.webServer>
<httpProtocol>
    <customHeaders>
        <add name="Content-Security-Policy" value="script-src 'self' 'unsafe-inline' https://www.google.com https://www.google.com/recaptcha/api.js https://www.gstatic.com" />
    </customHeaders>
</httpProtocol>
</system.webServer> 

但由于浏览器阻止了所有其他文件,因此我的页面无法正常工作

asp.net-mvc recaptcha content-security-policy
1个回答
1
投票

脚本的失败似乎与CSP无关。那些并不是你得到的错误;只是注意到。

在CSP中,一些策略会覆盖其他策略,因此您会注意到策略A被忽略,因为您正在使用策略B.那么为什么要将策略A置于其中,您问?为了与不了解策略B的旧浏览器兼容

例如:我使用CSP nonce,但也放入“unsafe-inline”。 IE不理解nonces,所以它使用“unsafe-inline”规则。现代浏览器忽略“unsafe-inline”并使用nonce。在Firefox控制台中,我收到类似于你所获得的通知