Content-Security-Policy - 'strict-dynamic' 和 eval 关键字

Content-Security-Policy - 'strict-dynamic' and the eval keyword

CSP Strict Dynamic 编辑:link 提供了一些不正确的信息。请参阅下面的答案。

从上面link看来,strict-dynamic 似乎允许加载的脚本创建额外的脚本,eval 关键字也是如此吗? 换句话说,将 strict-dynamic 与 nonce 结合使用是否允许加载托管在内部 CDN 上的第三方依赖项,然后能够使用 eval 关键字从字符串生成 javascript?

From this Whosebug question here,我知道不能结合使用 unsafe-eval 等来获得所需的粒度。

有没有办法在 2021 年允许对非常具体的用例进行评估,或者如果我无法重构代码以删除对评估的使用,是否需要不安全评估?

From the above link, it sounds like strict-dynamic allows loaded scripts to create additional scripts, does the same hold true for the eval keyword?

Link 您所引用的信息不真实。 'strict-dynamic' 不会导致忽略 'unsafe-eval',而且页面包含其他误导性信息。

'unsafe-eval' 充当 global page flag(见第 4 段注释)。因此它覆盖了整个页面,而不是指定的脚本。

Is there a way to allow eval for very specific use cases in 2021?

是的,有一个“非常具体的用例”- 在 Firefox 浏览器中,您可以允许 'unsafe-eval' 工作人员,但不允许页面上的脚本。