允许带有 npm 头盔的 S3 图像
Allowing S3 images with npm helmet
我正在使用 npm helmet 来保护我的 Express 应用程序,但我想允许我的 S3 存储桶中的图像呈现。当我使用 helment Refused to load the image '<URL>' because it violates the following Content Security Policy directive: "img-src 'self' data:".
时出现此错误,这是有道理的,我违反了头盔实施的 CSP。
我在他们的文档中唯一能找到的是:
app.use(
helmet({
contentSecurityPolicy: false,
})
);
这确实允许我的图像渲染,但我仍然想要头盔提供的 CSP。我只需要基本上将我的 S3 列入白名单 link,但我在他们的文档中找不到关于这个主题的任何内容
这里是头盔的维护者。
头盔默认设置了几个security-relatedheaders,其中一个叫Content-Security-Policy
。内容安全策略或 CSP 实际上是允许您的页面加载和执行的内容的白名单。
您看到一个错误,表明您的 CSP 不允许从您的域 ('self'
) 或数据 URI (data:
) 以外的任何地方加载图像。你可以用类似的东西来解决这个问题:
app.use(
helmet({
contentSecurityPolicy: {
directives: {
...helmet.contentSecurityPolicy.getDefaultDirectives(),
"img-src": ["'self'", "s3.amazonaws.com"],
},
},
})
);
有关 CSP 的更多信息,请查看 this introduction on MDN。
我一直在考虑在 Helmet 的文档中更清楚地说明这一点,所以感谢您提出这个问题。
我正在使用 npm helmet 来保护我的 Express 应用程序,但我想允许我的 S3 存储桶中的图像呈现。当我使用 helment Refused to load the image '<URL>' because it violates the following Content Security Policy directive: "img-src 'self' data:".
时出现此错误,这是有道理的,我违反了头盔实施的 CSP。
我在他们的文档中唯一能找到的是:
app.use(
helmet({
contentSecurityPolicy: false,
})
);
这确实允许我的图像渲染,但我仍然想要头盔提供的 CSP。我只需要基本上将我的 S3 列入白名单 link,但我在他们的文档中找不到关于这个主题的任何内容
这里是头盔的维护者。
头盔默认设置了几个security-relatedheaders,其中一个叫Content-Security-Policy
。内容安全策略或 CSP 实际上是允许您的页面加载和执行的内容的白名单。
您看到一个错误,表明您的 CSP 不允许从您的域 ('self'
) 或数据 URI (data:
) 以外的任何地方加载图像。你可以用类似的东西来解决这个问题:
app.use(
helmet({
contentSecurityPolicy: {
directives: {
...helmet.contentSecurityPolicy.getDefaultDirectives(),
"img-src": ["'self'", "s3.amazonaws.com"],
},
},
})
);
有关 CSP 的更多信息,请查看 this introduction on MDN。
我一直在考虑在 Helmet 的文档中更清楚地说明这一点,所以感谢您提出这个问题。