如何使用Helmet 4.4.1版本的node.js模块启用和禁用upgradeInsecureRequests csp指令

pbgvytdp  于 2022-12-03  发布在  Node.js
关注(0)|答案(4)|浏览(183)

我已经使用Helmet 4.4.1版本尝试过此操作,下面两个版本都将upgrade-unsecure-requests CSP设置为true

upgradeInsecureRequests: [] and upgradeInsecureRequests: ['true']

以上哪种格式是正确的?

wrrgggsh

wrrgggsh1#

这对我很有效:

app.use(
        helmet.contentSecurityPolicy({
            directives: {
                "script-src": ["'self'"],
                upgradeInsecureRequests: null
            },
        })
    );

正在将升级不安全请求设置为空:

upgradeInsecureRequests: null
ghg1uchk

ghg1uchk2#

已解决:我们可以简单地添加upgradeInsecureRequests:[]

vtwuwzda

vtwuwzda3#

这对我很有效:

defaultDirectives = helmet.contentSecurityPolicy.getDefaultDirectives();
delete defaultDirectives['upgrade-insecure-requests'];

app.use( helmet() );
app.use(helmet.contentSecurityPolicy({
  directives: {
    ...defaultDirectives,
  },
}));

delete部分会移除defaultDirectives对象中的upgrade-insecure-requests机码。

mspsb9vt

mspsb9vt4#

经过几个小时的反复试验,我终于成功了。我是这样做的:

const defaultCspOptions = helmet.contentSecurityPolicy.getDefaultDirectives();
delete defaultCspOptions["upgrade-insecure-requests"]

app.use(helmet({
  contentSecurityPolicy: {
    useDefaults: false,
    directives: { ...defaultCspOptions },
  })
)

就像Nico塞拉诺的回答一样,是的。事实上,它启发了我们这样做。我只是添加了useDefaults: false。否则,即使'upgrade-insecure-requests'属性不再存在于defaultCspOptions中, Helm 也会自动用默认值重新添加任何丢失的属性。使delete部分变得无用。

相关问题