如何使用头盔?

How to use helmet?

我想使用头盔包来做以下事情:

set X-Frame-Options = SAMEORIGIN

Disable the X-Powered-By header.

Content-Security-Policy 应该是什么?如何使用 helmet 设置它? Access-Control-Allow-Origin 怎么样?

我还想用它来启用安全性最佳实践。你有什么建议?这些最佳做法是什么?我该如何设置它们?

你可以这样写:

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

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

这里是头盔的维护者。

首先,Helmet 不足以确保您的 Express 应用程序安全。这需要了解最佳实践、漏洞等。 Helmet 仅尝试解决该难题的一小部分:设置与安全相关的各种 HTTP 响应 header。

例如,默认情况下,Helmet 会将名为 X-Frame-Options 的 header 设置为 SAMEORIGIN。 header 不会神奇地使您的应用安全,但它可以帮助缓解 clickjacking attacks。它还将默认禁用名为 X-Powered-By 的 header,

以下是使用 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 header:

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

默认情况下,头盔负责11header秒,包括上面提到的两个。

头盔最重要,也是最难配置的,header是Content-Security-Policy。这里不值得深入描述;我推荐阅读 MDN's introductory article.

头盔可以帮你设置Content-Security-Policyheader,你可以阅读更多关于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 的一部分,头盔不会触及它。