【问题标题】:Am I creating a CSP issue for myself?我是在为自己创建 CSP 问题吗?
【发布时间】:2020-12-03 20:26:26
【问题描述】:

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

所以我使用下面的代码来更改 CSP,因为我在这里找到的 <meta> 标记都没有解决我的错误。我只是想确保这不会造成安全问题,因为我对 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'")

})

【问题讨论】:

    标签: node.js express http security content-security-policy


    【解决方案1】:

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

    脚本
    script-src http://* 'unsafe-inline' 'unsafe-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;
    

    'unsafe-eval' 仅在某些脚本使用 eval() / Function() / setInterval() / setTimeout 时才需要() 函数。

    尽量避免'unsafe-inline'使用'nonce-value'令牌。

    *style-src也是如此。

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

    默认源代码
    好的做法是default-src 'self'; - 所有未指定的后备指令都仅限于自己的域。

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

    【讨论】:

      猜你喜欢
      • 2013-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      相关资源
      最近更新 更多