这是一个问题/问题,我提供了一个来自我们业务领域的JavaScript (例如Www.mysite.com/js/emeics.js),它包含在20多个不同的web应用程序中,并包含在它们的文档中。这是用于分析追踪。我假设需要通过使用脚本-src元标记更新DOM来设置CSP,该标记只适用于我的代码和它调用的外部JavaScripts (来自Akamai assets.adobedtm.com),而不是整个web应用程序。我的CSP元标记是否可以应用到web应用程序加载的任何外部脚本,并且我必须知道每个外部JavaScript --所有的web应用程序都加载了?有办法做到这一点吗?有什么想法吗?这是我第一次做CSP所以也许我没有正确理解它..。所以温柔点!
谢谢!
发布于 2021-10-01 21:05:56
是的,您的CSP标记将应用于web应用程序加载的任何外部脚本,并且在共同的情况下,您必须了解每个外部JavaScript所有的web应用程序负载。
但是,如果您加载的所有脚本都来自assets.adobedtm.com,则只需将此源添加到script-src指令中:
script-src assets.adobedtm.com它的所有外部脚本都将被允许。
另外,CSP提供了一种实现您想做的事情的可能性-- 'strict-dinamic'令牌与'nonce-value'或'hash-value'配对。但是Safari仍然没有实现这个功能(它支持Chrome、Edge和Firefox)。如果您的CSP与'nonce-value'类似:
script-src 'nonce-SomeSecureValue' 'strict-dinamic';超过:
<script src='https://domain/script.js' nonce='SomeSecureValue'>将允许加载,并且它插入的任何子脚本也将被允许。
'hash-value'在CSP中的应用
script-src 'sha256-HashOfScriptAllowed' 'sha256-HashOfScript2Allowed' 'strict-dinamic';超过:
<script src='https://domain/script.js' integrity='sha256-HashOfScriptAllowed'>将允许加载,并且它插入的任何子脚本也将被允许。但是Firefox有一个bug,它只支持内联脚本,而不支持外部脚本。
或者,您可以使用内联<script nonce='SomeSecureValue'> dynamically create script tags and load external scripts</script>,并允许它通过nonce或hash。它的所有子脚本都将被允许。
可以使用'strict-dynamic'绕过Safari的谷歌严格的CSP错误。
https://stackoverflow.com/questions/69410129
复制相似问题