内联样式CSP违反tawk.to嵌入式聊天小部件

问题描述

我在我的网站上使用Tawk.to的聊天小部件代码来启用聊天气泡。我只是将代码放在JS文件中:

var Tawk_API = Tawk_API || {},Tawk_LoadStart = new Date();

(function() {
var s1 = document.createElement("script"),s0 = document.getElementsByTagName("script")[0];
s1.async = true;
s1.src = 'https://embed.tawk.to/xxxxxx/default';
s1.charset = 'UTF-8';
s1.setAttribute('crossorigin','*');
s0.parentNode.insertBefore(s1,s0);
})();

我需要在HTML文件中将其作为<script>。它按预期工作。但是问题在于,以下代码导致我的网站违反了某些内容安全政策。对于我的内容安全策略,出于安全原因,我不允许任何内联样式。显然,“ https://embed.tawk.to/xxxxxx/default”确实包含一些内联样式。可以在我的网站上不允许内嵌样式的方法解决此问题吗?

解决方法

Tawk.to的小部件在标记和内联样式块中具有大量内联样式,因此使用“哈希值”允许这些实际上无法实现。

唯一的方法是对这个小部件进行iframe隔离(如果适用)与主页CSP隔离。

对于我的内容安全政策,我不允许任何内联 出于安全原因的样式

脚本中的“不安全内联”呢?比style-src安全得多。 您可以使用“ nonce-base64value”令牌允许小部件本身的内联脚本,但是Tawk.to的小部件使用javascript:-navigation,因此在script-src中没有“ unsafe-inline”的情况下,您也将违反CSP。请点击微笑图标,然后进入浏览器控制台。