【问题标题】:CSP for embedding youtube video用于嵌入 youtube 视频的 CSP
【发布时间】:2020-11-12 17:07:31
【问题描述】:

我刚刚开始在 Chrome 上通过嵌入的 youtube 视频看到这个(86.0.4240.193 - 最近更新,这可能就是我刚刚看到这个的原因) - 这些只是“报告”,所以视频仍然显示,但只有 100 个的错误不可能是正确的!这就是我所看到的:

[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=='".

这是我的 iFrame --

<iframe id="video-iframe" width="500" height="281" src="https://www.youtube.com/embed/HIDDENVIDEO" frameborder="0" allowfullscreen ></iframe>

我无法弄清楚 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>

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

非常感谢任何帮助。

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

【问题讨论】:

    标签: content-security-policy youtube-iframe-api


    【解决方案1】:

    如您所见,此错误不是您的 CPS 触发的 - 您的没有 'nonce-t9IE7nI2leo7qKxsm7d80g=='" 令牌。此错误出现在 Google 的 &lt;iframe&gt; 中,完全是 Google 的内部交易。

    事实上,Chrome 的几个早期版本都有一个错误和did not block eval 表达式。
    在 86 版 Chrome 中,他们修复了这个错误,为了验证这一点,他们设置了 Report-Only 标头并假调用 eval 来查看报告。

    CSP for Youtube 非常简单,不需要“unsafe-eval”,因为所有工作都在隔离的 iframe 中:
    frame-src youtube.com www.youtube.com; 足以让 Youtube 在 iframe 中使用。

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

    【讨论】:

    • 感谢您的回复 - 非常感谢。我浏览了链接上的详细信息,因此,我可以简单地忽略这些 - 并且不需要包含 CSP,对吧?
    • 是的,您不需要任何步骤,因为它不是您的 CSP。 Google 负责这些,它会在检查后删除 Content-Security-Policy-Report-Only 标头。
    • @granty 你链接到解决方案而不是把它放在你的答案中很遗憾,因为链接显然已经腐烂了
    • 对于给您带来的不便,我深表歉意。在任何情况下,我都为 youtube 添加了答案 CSP。您还有什么建议添加到答案中?
    • 对不起,我尝试了以下方法: 仍然可以给我同样的以下错误:拒绝框架'youtube.com',因为它违反了以下内容安全策略指令:“frame-src'none'”。
    【解决方案2】:

    我能够使用&lt;head&gt; 中的meta 标签让我的嵌入式视频正常工作

    <meta http-equiv="Content-Security-Policy"
          content="default-src 'self'; img-src https://*; child-src 'none'; frame-src youtube.com https://www.youtube.com;">
    

    https:// 添加到www.youtube.com

    【讨论】:

      猜你喜欢
      • 2019-01-31
      • 2016-04-02
      • 2018-06-08
      • 1970-01-01
      • 2019-07-24
      • 2021-12-04
      • 2012-06-25
      • 1970-01-01
      相关资源
      最近更新 更多