内容安全策略:该页面的设置阻止了资源的加载


104

我在页面加载中使用了CAPTCHA,但是由于某些安全原因而被阻止。

我正面临这个问题:

    内容安全策略:页面的设置阻止了加载
    的资源
    http://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit
    (“ script-src http://test.com:8080'unsafe-inline''unsafe-eval'”)。

我使用了以下JavaScript和meta标签:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
<script src="http://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit" async defer></script>

如果我是你,我会尝试使用服务器端代码而不是javascript。JS对于CORS和类似的东西不是很好。Google确实有选择
。.– Gogol

javascript为这个问题添加了标签,因为该问题与jQuery无关。它会影响任何JavaScript。实际上,如果您jQuery完全删除标签,该问题将更有用,但这不是我要做的。
曼戈

2
现在删除的答案是正确的。由于某种原因“内容安全策略:该页面的设置阻止资源的加载”是,如果JavaScript是没有启用或阻止(例如,通过NoScript的浏览器)。在这种情况下,错误输出的一部分可能是“无法处理未知指令'noscript-marker'”
Peter Mortensen

我无法评论使用about:config的其他建议,因此我想在这里添加它。有人建议进入about:config并将security.csp.enable设置为false。其他人都说这是一个可怕的想法。我只想说这也是我决定使用的解决方案。很多网站在Firefox中完全停止为我工作,到处都有大量此类错误。Chrome仍会加载它们。不知道为什么会这样,将security.csp.enable设置为false允许这些站点再次使用Firefox加载,我更喜欢Firefox,而不是Chrome。如果
EliT

Answers:


85

您已经说过只能从自己的站点(自身)加载脚本。然后,您尝试从另一个网站(www.google.com)加载脚本,并且由于限制了此操作,因此无法加载脚本。这就是内容安全策略(CSP)的重点。

您可以将第一行更改为:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://www.google.com">

或者,值得一提的是,完全删除该行,直到您了解有关CSP的更多信息。您当前的CSP是相当宽松反正(允许unsafe-inlineunsafe-evaldefault-src*),所以它可能不会增加太多的价值,是诚实的。


5
这是一个不安全的解决方法-Google的CSP检查器会为此行显示多次严重错误。(不幸的是,实施良好的CSP并
非易事

8
我对此评论表示怀疑。CSP的问题是由于原始CSP引起的。这些答案的全部目的就是为了解决这个问题,并在此添加www.google.com域。我是否可以建议同时收紧CSP?可能,但我会说这超出了问题的范围。特别是因为已经很明显,OP对CSP并不熟悉。
巴里·波拉德

3
现在CSP是否“不安全”?这是有争议的。允许unsafe-inline和unsafe-eval以及默认的*来源会破坏CSP的许多目的(因此,我也建议删除它),但是应该记住,CSP永远不会放松浏览器控件,因此即使这种丢失策略也是在没有CSP的页面上添加一些控件-事实证明它阻止了Google脚本!因此,“不安全”可能不是一个好名词。“过于宽松以致不值得”是一种更好的措辞方式。因此,是的,此CSP仍有很多不足之处,但是将Google添加到其中并不是一个“不安全的解决方法”。
巴里·波拉德

3
公平的一点是,任何CSP(“一切都很好”除外)总比没有好
。– Freewalker

那里有一点问题,我从chrome://global/content/elements/panel.js(Firefox)那里收到了该错误,该错误在所有页面上都禁用了调试
AaA

14

在Visual Studio 2019中运行我的ASP.NET Core Angular项目后,有时我会在Firefox控制台中收到此错误消息:

内容安全策略:页面的设置阻止以内联方式(“ default-src”)加载资源。

在Chrome中,错误消息改为:

加载资源失败:服务器响应状态为404()

就我而言,这与我的内容安全策略无关,而仅仅是我自己TypeScript错误的结果。

检查您的IDE输出窗口是否有TypeScript错误,例如:

> ERROR in src/app/shared/models/person.model.ts(8,20): error TS2304: Cannot find name 'bool'.
>
> i 「wdm」: Failed to compile.

注意:由于此问题是此错误消息在Google上的第一个结果。


11

我有类似的错误类型。首先,我尝试在代码中添加meta标签,但是没有用。

我发现在Nginx Web服务器上,您可能具有可能阻止外部代码运行的安全设置:

# Security directives
server_tokens off;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'  https://ajax.googleapis.com  https://ssl.google-analytics.com https://assets.zendesk.com https://connect.facebook.net; img-src 'self' https://ssl.google-analytics.com https://s-static.ak.facebook.com https://assets.zendesk.com; style-src 'self' 'unsafe-inline' https://assets.zendesk.com; font-src 'self' https://fonts.gstatic.com  https://themes.googleusercontent.com; frame-src https://player.vimeo.com https://assets.zendesk.com https://www.facebook.com https://s-static.ak.facebook.com https://tautt.zendesk.com; object-src 'none'";

检查内容安全策略。您可能需要添加源引用。


4
请注意,这是不安全的-此Content-SecurityPolicy从Google的CSP Evaluator中获得“高严重性”故障。
Freewalker

1

我设法让所有必不可少的网站都带有此标头:

header("Content-Security-Policy: default-src *; style-src 'self' 'unsafe-inline'; font-src 'self' data:; script-src 'self' 'unsafe-inline' 'unsafe-eval' stackexchange.com");                    


-7

您可以在浏览器中禁用它们。

火狐浏览器

键入about:config在Firefox地址栏中,找到security.csp.enable并将其设置为false

您可以安装称为Disable Content-Security-Policy禁用CSP的扩展。


82
除了临时调试,永远不要这样做。这是浏览器的关键安全功能。
hackel

4
这只会在本地修复它,此外,它会使浏览器更容易受到攻击。
尼尔·乔杜里

3
这是测试/调试的“建议”吗?如果是这样,应在回答中加以提及,以避免在不知情的人社区中散布危险漏洞。顺便说一句,正如@NeilChowdhury所说,这将在您的系统上修复它,那么实际的网站访问者呢?
Fr0zenFyr

13
临时解决方案,但有助于调试(加一)
NarendraR

5
@hackel我将这样做。我会。
アレックス
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.