Content-Security-Policy (CSP)标题旨在保护您的应用程序免受Web应用程序中的恶意资源注入。为简单起见,您需要为所有图像,脚本,样式等提供允许的域来源的白名单。
与此同时,营销团队正在使用Google Tag Manager (GTM)来管理代码。原则是从页面收集信息,将它们发送到GTM并将这些数据用作变量来生成标签,模板化JS / HTML和这些变量的组合。
问题是这些标签中的大多数都包含javascript,用于向跟踪器,广告服务器或任何合作伙伴发送非常具体的数据。让我们假设我的营销团队意识到安全风险,并且不会包含恶意脚本。
有没有办法知道GTM导入哪些域名,以便它们可以自动添加到我的CSP上?
答案 0 :(得分:2)
这是一个大问题,我很惊讶关于这方面的信息如此之少。谨防任何建议在您的 CSP 中设置unsafe-inline的解决方案,因为这会使策略变得如此薄弱,几乎毫无用处。
为了回答您的直接问题,无法通过编程方式知道 GTM 使用了哪些域。我建议将 CSP 设置为仅报告模式,并使用错误作为创建白名单的指南。
要回答如何让它们共存的更广泛问题,主要的解决方案是使用 nonce 值和随机数感知 GTM 脚本,如 Google 在此处 https://developers.google.com/tag-manager/web/csp 所述。
简而言之:
然而,这个解决方案并不完整,因为 GTM 似乎没有将 nonce 传播到任何自定义 HTML 标签。为此,您必须:
答案 1 :(得分:1)
我认为没有一种方法可以直接开箱即用。 您可以做的是使用GTM API(https://developers.google.com/tag-manager/api/v1/reference/accounts/containers/tags/list),您可以基本上迭代所有自定义HTML 和自定义图像标记并收集主机名