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

IT技术 javascript jquery content-security-policy
2021-02-11 17:34:47

在页面加载时使用验证码,但由于某些安全原因它被阻止。

我面临这个问题:

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

我使用了以下 JavaScript 和元标记:

<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>
6个回答

你说过你只能从你自己的站点(self)加载脚本。然后,您尝试从另一个站点 ( 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 的更多信息之前,完全删除该行可能是值得的。无论如何unsafe-inline您当前的 CSP 非常松散(允许,unsafe-eval和 a default-srcof *),所以说实话,它可能不会增加太多value。

我对这个评论有异议。CSP 的问题是由于原始 CSP。所有这些答案所做的就是将其添加到 www.google.com 域中以回答问题。我是否可以同时建议进一步收紧 CSP?可能,但我会说这超出了问题的范围。特别是因为很明显 OP 不熟悉 CSP。
2021-03-15 17:34:47
现在CSP“不安全”了吗?这是有争议的。允许 unsafe-inline 和 unsafe-eval 以及 * 的默认来源违背了 CSP 的大部分目的(因此我还建议删除它),但应该记住,CSP永远不会放松浏览器控制,因此即使这种丢失策略也是添加对没有 CSP 的页面的一些控制 - 正如它阻止 Google 脚本的事实所证明的那样!所以“不安全”可能不是一个好词。“太松懈不值得”也许是更好的表达方式。所以是的,这个 CSP 有很多不足之处,但将 Google 添加到它并不是一种“不安全的解决方法”。
2021-03-18 17:34:47
有一点问题,我从chrome://global/content/elements/panel.js(Firefox)收到该错误,该错误禁用了所有页面上的调试
2021-03-23 17:34:47
公平的一点是,任何 CSP(除了“一切都很好”)通常总比没有好。
2021-03-24 17:34:47
这是一种不安全的解决方法 - Google 的 CSP 检查器使该行出现多次严重故障。(不幸的是,实施一个好的 CSP 并非易事,需要根据站点进行定制。)
2021-04-01 17:34:47

在 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 上的第一个结果。

我有类似的错误类型。首先,我尝试在代码中添加元标记,但没有成功。

我发现在 nginx 网络服务器上,您可能有一个安全设置,可能会阻止外部代码运行:

# 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'";

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

请注意,这是不安全的 - 此 Content-SecurityPolicy 从Google 的 CSP Evaluator获得高严重性失败
2021-04-08 17:34:47

我设法允许所有必需的站点使用此标头:

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

我通过升级我使用的 Angular 版本(从 v8 -> v9)和 TypeScript 版本(从 3.5.3 -> 最新)解决了这个问题。

解释是什么?
2021-03-17 17:34:47