0

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

set X-Frame-Options = SAMEORIGIN

Disable the X-Powered-By header.

Content-Security-Policy 应该是什么以及如何使用头盔进行设置?访问控制允许来源怎么样?

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

4

2 回答 2

3

头盔的维护者在这里。

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

例如,默认情况下,Helmet 会设置一个名为X-Frame-Options. SAMEORIGIN此标头不会神奇地使您的应用程序安全,但它可以帮助减轻点击劫持攻击。它还将禁用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' },
}));

如果您希望 HelmetX-Frame-Options完全忽略标题:

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

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

Helmet 最重要且最难配置的 header 是Content-Security-Policy. 这里不值得深入描述;我推荐阅读MDN 的介绍性文章

Helmet 可以帮助您设置Content-Security-Policy标题,您可以在 Helmet 的文档中阅读更多信息。这是一个简单的例子:

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

你也问过Access-Control-Allow-Origin。这是跨域资源共享的一部分,Helmet 没有涉及。

于 2020-12-13T18:38:27.090 回答
1

你可以这样写:

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

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

于 2020-12-13T15:46:37.190 回答