尽管正在定义 CSP script-src-elem 错误,但如何修复它?

Sul*_*hal 2 ocsp node.js content-security-policy pug

我的哈巴狗的元标签中有类似的东西。我的文件中有大量 2 3 CDN。

 meta(http-equiv='Content-Security-Policy' content="default-src * 'unsafe-inline' 'unsafe-eval'; script-src-elem * 'unsafe-inline';"  )

Run Code Online (Sandbox Code Playgroud)

尽管我已经定义了 script-src-elem,但我收到类似这样的错误。

Refused to load the script '<URL>' because it violates the following Content Security Policy directive: "script-src 'self'". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback. 我将衷心感谢您的帮助。先感谢您

gra*_*nty 5

让我猜猜。您使用与 Express 链接的 PUG。在 Express 中,您使用 Helmet 安全中间件。

重点是 Helmet 4 默认通过 HTTP 标头发布 CSP,并且 script-src 'self'是该 Helmet 默认 CSP 的片段。

由于您已发布一个 CSP,因此您无法使用元标记来放松它。如果发布了 2 个 CSPS,则所有源都应原封不动地通过两个 CSP。因此,您的script-src-elem * 'unsafe-inline'from 元标记不会触发违规,但script src 'self'来自 CSP HTTP 标头 - 确实会引发违规。
您必须删除元标记并通过helmet.contentSecurityPolicy(options)配置头盔。或者在 Helmet 中禁用CSP 并使用元标记:

app.use(
  helmet({
    contentSecurityPolicy: false,
  })
);
Run Code Online (Sandbox Code Playgroud)