我是否在为自己创建 CSP 问题?

Am I creating a CSP issue for myself?

我已经设置了我的节点。js/express 项目使用存储在 S3 中的 <img>。我在引用它们时收到此错误消息:.....because it violates the following Content Security Policy directive: "img-src 'self' data:".

所以我使用下面的代码更改 CSP,因为我在此处找到的 <meta> 标签中的 none 解决了我的错误。我只是想确保这不会造成安全问题,因为我对 CSP

知之甚少
app.get("/", (req, res) => {
    res.set("Content-Security-Policy", "default-src *; style-src 'self' http://* 'unsafe-inline'; script-src 'self' http://* 'unsafe-inline' 'unsafe-eval'")

})

您的 CSP 完全不安全,因为它没有任何限制。

脚本
script-src http://* 'unsafe-inline' 'unsafe-eval' 允许来自任何来源的外部脚本,允许内联脚本和 eval 函数。

您应该 http://* 指定允许的脚本加载来源的白名单,例如:

script-src 'unsafe-inline' 'self' stackpath.bootstrapcdn.com tagmanager.google.com ajax.googleapis.com/ajax/libs/jquery/ googletagmanager.com https://connect.facebook.net;
仅当某些脚本使用 eval() / Function() / 时才需要

'unsafe-eval' setInterval() / setTimeout() 函数。

尝试使用 'nonce-value' 令牌来避免 'unsafe-inline'

* 同样适​​用于 style-src.

图片
如果您从 Amazon S3 加载图像,您可以在 img-src 中指定存储桶的域名,例如 img-src 'self' https://bucketname.s3.Region.amazonaws.com.
您可以完全打开所有图片来源 img-src *,但仅限于图片,不适用于脚本、样式、iframe 等。 img-src 中的 data: 仅当您使用数据时才需要:-URL 像 <img src='data:image/gif;base64,...'> 或 CSS 收缩像 background-url(data:image/jpeg;base64,...).

默认-src
好的做法是 default-src 'self'; - 所有未指定的回退指令仅限于自身域。

CSP 必须尽可能严格以确保安全。