NodeJS 如何使用 Helm ?

ars1skjm  于 2023-04-05  发布在  Node.js
关注(0)|答案(2)|浏览(216)

我想使用 Helm 包执行以下操作:

set X-Frame-Options = SAMEORIGIN

Disable the X-Powered-By header.

Content-Security-Policy应该是什么?我如何使用helmet设置它?Access-Control-Allow-Origin怎么样?
我还想用它来启用安全性的最佳实践。您有什么建议?这些最佳实践是什么?如何设置它们?

3df52oht

3df52oht1#

我是 Helm 维修工。
首先,Helmet不足以让您的Express应用程序安全。这需要了解最佳实践,漏洞等等。Helmet只试图解决这个难题的一小部分:设置与安全相关的各种HTTP响应头。
例如,默认情况下,Helmet会将一个名为X-Frame-Options的头设置为SAMEORIGIN。此头不会神奇地使您的应用安全,但它可以帮助缓解clickjacking attacks。它还会默认禁用一个名为X-Powered-By的头,该头将在默认情况下禁用。
以下是如何使用Helmet及其所有默认设置:

app.use(helmet());

如果你想覆盖X-Frame-Options的默认值,你可以这样做:

// Sets all of the defaults except for X-Frame-Options,
// which is set to "DENY" instead of its default
app.use(helmet({
  frameguard: { action: 'DENY' },
}));

如果你想让Helmet完全忽略X-Frame-Options头:

// Sets all of the defaults except for X-Frame-Options
app.use(helmet({
  frameguard: false,
}));

默认情况下,Helmet负责11个头,包括上面提到的两个。
Helmet最重要也是最难配置的头部是Content-Security-Policy,这里不值得深入描述;我推荐阅读MDN's introductory article
Helmet可以帮助你设置Content-Security-Policy头,你可以阅读更多关于on Helmet's docs的内容。这里有一个简单的例子:

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

你还问了Access-Control-Allow-Origin,这是Cross-Origin Resource Sharing的一部分,Helmet不会碰它。

mznpcxlj

mznpcxlj2#

你可以这样写:

app.use(helmet({
  frameguard: false // for SAMEORIGIN
}));

app.disable('x-powered-by'); // for disable the X-Powered-By header.

相关问题