用于嵌入 YouTube 视频的 CSP

use*_*154 7 content-security-policy youtube-iframe-api

我刚刚开始在 Chrome 上的嵌入式 YouTube 视频中看到这一点(86.0.4240.193 - 最近更新,这可能就是我看到这个的原因) - 这些只是“报告”,因此视频仍然会显示,但可能会出现数百个错误不对吧!这就是我所看到的:

[Report Only] Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src 'strict-dynamic' 'unsafe-inline' https: 'report-sample' 'nonce-t9IE7nI2leo7qKxsm7d80g=='".
Run Code Online (Sandbox Code Playgroud)

这是我的 iFrame——

<iframe id="video-iframe" width="500" height="281" src="https://www.youtube.com/embed/HIDDENVIDEO" frameborder="0" allowfullscreen ></iframe>
Run Code Online (Sandbox Code Playgroud)

我不知道 CSP 应该是什么——我发现这个 CSP 显然可以解决他们的问题——

<iframe id="video-iframe" width="500" height="281" src="https://www.youtube.com/embed/HIDDENVIDEO" frameborder="0" allowfullscreen csp="script-src 'self' https://www.google-analytics.com/ https://www.youtube.com/ https://s.ytimg.com/; object-src 'self'; child-src https://www.youtube.com/* https://s.ytimg.com/"></iframe>
Run Code Online (Sandbox Code Playgroud)

没那么多——我只是看到:拒绝显示......

非常感谢任何帮助。

我刚刚检查了该developers.google.com/youtube/iframe_api_reference#Examples页面,我看到了同样的事情——这当然不应该发生,对吧?

在此输入图像描述

gra*_*nty 9

如您所见,此错误不是由您的 CPS 触发的 - 您的 CPS 没有'nonce-t9IE7nI2leo7qKxsm7d80g=='"令牌。此错误出现在 Google 内部<iframe>,这完全是 Google 的内部处理。

事实上,Chrome 之前的几个版本都有一个 bug,并且没有阻止 eval表达式。
在 Chrome 版本 86 中,他们修复了这个错误,为了验证这一点,他们设置了 Report-Only 标头,并对 eval 进行了虚假调用以查看报告。

Youtube 的 CSP非常简单,不需要“不安全评估”,因为所有工作都在独立的 iframe 中:
frame-src youtube.com www.youtube.com;足以允许 iframe 中的 Youtube。


顺便说一句,您的 CSP 有一个错误-*路径部分不允许使用 。并小心<iframe csp= - 如果服务器不同意您的 CSP,内容将被阻止。
但这之所以<iframe csp=发挥作用,是因为 Chrome 再次出现错误 - 它会忽略 Content-Security-Policy-Report-Only 如果 Content-Security-Policy 标头存在。