我正在开发一个仍然是本地的网站。我安装了this包以将正确的CSP添加到我的站点(我使用Laravel& VueJs构建)。
我已逐一解决了这些问题。但现在在我的Chrome控制台中,我再也看不到任何CSP错误了。它只显示一个空白页面。我在Firefox中打开了这个网站。在那里,在控制台中,我遇到了以下错误:
内容安全策略:页面的设置阻止了加载 自我资源(“script-src”)。来源:致电eval()或相关 功能被CSP阻止。
我在生成的包中搜索了eval()
函数,但它并没有出现在任何文件中。这里有人对我如何解决这个问题有一些建议吗?
答案 0 :(得分:-1)
正如您在注释中发现的那样,它来自其他一些函数使用的隐式eval(例如setTimeout或用字符串调用的setInterval)。不幸的是,您不能只对单个脚本进行不安全评估。因此,您最终可能会在整个站点上允许进行不安全评估。实际上,这在我见过的CSP标头中极为常见。
CSP标头像这样非常黑白。通常,您的选择是完全允许或完全阻止某项。我在Enchanted Security处正在开发另一种解决方案,该解决方案可以检查对重要浏览器功能(主要是网络请求)的调用,以(1)跟踪它们以供将来进行脱机分析和审核,(2)阻止那些认为不安全的调用。