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

Sha*_*rma 60 javascript jquery content-security-policy

我在页面加载时使用验证码,但由于某些安全原因它会阻塞

我面临问题:

    Content Security Policy: The page's settings blocked the loading 
    of a resource at 
    http://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit 
    ("script-src http://test.com:8080 'unsafe-inline' 'unsafe-eval'").

我使用了以下js和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>
Run Code Online (Sandbox Code Playgroud)

Bar*_*ard 55

您已经说过只能从自己的站点加载脚本(自己).然后,您尝试从其他网站(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">
Run Code Online (Sandbox Code Playgroud)

或者,在您了解有关CSP的更多信息之前,可能需要完全删除该行.您当前的CSP是相当宽松反正(允许unsafe-inline,unsafe-evaldefault-src*),所以可能不会增加太多的价值是诚实的.

  • 我对此评论表示怀疑。CSP的问题是由于原始CSP引起的。这些答案的全部目的就是为了解决这个问题,并在其中添加www.google.com域。我是否可以建议同时进一步收紧CSP?可能,但我会说这超出了问题的范围。特别是因为已经很明显,OP对CSP并不熟悉。 (4认同)
  • 这是一种不安全的解决方法-[Google的CSP检查器](https://csp-evaluator.withgoogle.com/)使此行出现多次严重失败。(不幸的是,实施良好的CSP并非易事,需要针对每个站点进行自定义。) (3认同)
  • 现在CSP是否“不安全”?这是有争议的。允许不安全的内联和不安全的评估以及默认的*来源破坏了CSP的许多目的(因此,我也建议删除它),但是应该记住,CSP不能*永远*松开浏览器控件,因此即使丢失政策正在对没有CSP的页面添加一些控制-事实证明它阻止了Google脚本!因此,“不安全”可能不是一个好名词。“过于宽松以至于不值得”是一种更好的措辞方式。因此,是的,此CSP仍有很多不足之处,但将Google添加到其中并不是一个“不安全的解决方法”。 (2认同)
  • 公平的观点,任何CSP(除了"一切都很好")通常会比没有更好. (2认同)

Wel*_*ing 19

我的ASP.NET Core Angular项目在 Visual Studio 2019 中运行,有时我会在 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.
Run Code Online (Sandbox Code Playgroud)

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


小智 8

具有类似的错误类型。首先,我尝试在代码中添加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'";
Run Code Online (Sandbox Code Playgroud)

检查Content-Security-Policy,您可能需要添加源引用。

  • 请注意,这是不安全的 - 此 Content-SecurityPolicy 从 [Google 的 CSP 评估器](https://csp-evaluator.withgoogle.com/) 获得高严重性失败。 (4认同)