【问题标题】:Content Security Policy CSP unsafe-eval on vendor files供应商文件上的内容安全策略 CSP unsafe-eval
【发布时间】:2020-06-10 00:51:12
【问题描述】:

我对理解 CSP 还很陌生,也许我只是在这里没有以正确的方式去做。

我为所有不同的策略类型和script-src 'self' <urls> unsafe-inline添加了白名单

但是我收到了几份关于Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source的报告

这些都在我的供应商 js 文件中,该文件是我们所有供应商的缩小和混淆集合。通过 npm build 使用 Webpack 和 Laravel 组合完成。

当这么多供应商脚本似乎需要它时,我应该如何在我的 CSP 中禁用 eval?

谢谢!

【问题讨论】:

  • unsafe-inline 必须是'unsafe-inline',带单引号。

标签: javascript http-headers eval content-security-policy


【解决方案1】:

如果您想按照错误提示允许使用eval,则必须添加'unsafe-eval' 源。使用'unsafe-inline' 允许执行内联脚本和内联事件处理程序。

script-src 'self' <urls> 'unsafe-inline' 'unsafe-eval'

【讨论】:

  • 但我尽量不使用 unsafe-eval。我不希望 eval 被允许。我的问题是如何禁用 unsafe-eval 但仍使用供应商文件? npm 将构建我的供应商文件,在某些情况下,我的供应商包含在 new Function() 中。它可能是一个 npm 或 webpack 混淆设置。如今,当 npm 供应商文件如此突出时,人们如何禁用 unsafe-eval?好像是不可能的。
  • 虽然你想允许 eval 因为你已经允许内联脚本。 webpack和babel-loader在某些情况下使用eval会出现一些问题,搜索webpack eval csp
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
  • 2023-01-07
  • 2023-01-12
  • 2016-03-25
  • 2013-10-09
  • 2015-07-28
  • 1970-01-01
相关资源
最近更新 更多