我应该在 REST 中使用 Helmet 的哪些模块 Api
What modules of Helmet should I use in my REST Api
问题:
休息时应使用哪些头盔模块API?
背景:
我正在构建 Node/Express REST Api 并不断看到 Helmet 作为我应该使用的安全中间件弹出。查看 Helmet 的文档,似乎某些模块(内容安全策略、跨域等)仅适用于前端应用程序。 Helmet中应该使用哪些模块休息API?
人们在 restful api 中使用 Helmet 的重要原因是为了避免 (XSS) 和脚本注入。你所要做的就是这个。请记住,它只是一个快速中间件。
const helmet = require("helmet");
app.use(helmet())
头盔是一个 Express.js 中间件。并用于避免脚本注入。当你初始化你的应用程序时,像这样使用头盔:
const express = require('express');
const helmet = require('helmet');
const app = express();
app.use(helmet());
希望对您有所帮助:)
tl;dr:以下可能对 API 有用,但您可以设置更多以确保安全:
helmet.expectCt
,它设置了 Expect-CT
header,如果您的 API 的消费者知道如何处理证书透明性 ,这将很有用
helmet.frameguard
,它设置了 X-Frame-Options
header,如果你的 API 响应被放入 iframe
或类似的,它是有用的。 (我个人对此有 运行。)
helmet.hsts
,设置 Strict-Transport-Security
header,有助于让用户继续使用 HTTPS
helmet.noSniff
,它设置 X-Content-Type-Options
header,在浏览器中很有用,这些浏览器可能会尝试 auto-detect 您的 API 响应的类型并做一些意想不到的事情. (我个人对此有 运行。)
helmet.permittedCrossDomainPolicies
,它设置了 X-Permitted-Cross-Domain-Policies
header,可能有助于保护您的网站免受来自 Flash 等 Adobe 产品的奇怪请求
这里是头盔的作者。
我想说使用 Helmet(或它设置的 HTTP headers)有两个原因 API:
- 一些 header 在 non-browser 用例中很有用,比如 REST API.
- 以防您的响应被加载到浏览器中。例如,如果黑客将其放入
<iframe>
并导致意外发生。 (旧浏览器有时会在这里出现问题,导致漏洞。)你也可以对 future-proof 你的 API 这样做,以防它 是 曾经在浏览器中加载过,即使如果不是今天。
Helmet 只是 collection 13 个较小的中间件。其中大多数设置单个 HTTP 响应 header,而其中大多数 header 仅在浏览器中有用。然而,有些偶尔对 APIs(REST 或其他)有用。
让我们列举一下:
helmet.contentSecurityPolicy
,里面设置了Content-Security-Policy
header,估计没用
helmet.dnsPrefetchControl
,里面设置了X-DNS-Prefetch-Control
header,估计没用
helmet.expectCt
,设置 Expect-CT
header, 可能有用 如果您的 API 的消费者知道如何处理证书透明度
helmet.featurePolicy
,里面设置了Feature-Policy
header,估计没用
helmet.frameguard
,它设置 X-Frame-Options
header, 可能有用 ,以防您的 API 响应被放置变成 iframe
或类似的。 (我个人对此有 运行。)
helmet.hidePoweredBy
,它删除了 X-Powered-By
header,可能没有用(在浏览器中甚至没那么有用!)
helmet.hsts
,设置 Strict-Transport-Security
header, 可能有用 让用户保持在 HTTPS
helmet.ieNoOpen
,里面设置了X-Download-Options
header,估计没用
helmet.noCache
将在未来的 Helmet 版本中被删除,并且无论如何对安全性都不是很有用,所以它可能没有用
helmet.noSniff
,它设置 X-Content-Type-Options
header, 可能在浏览器中有用 可能会尝试 auto-detect 您的API 响应的类型并做一些意想不到的事情。 (我个人对此有 运行。)
helmet.permittedCrossDomainPolicies
,设置 X-Permitted-Cross-Domain-Policies
header, 可能有用 来保护您的站点免受来自 Adobe 产品(如 Flash)的奇怪请求
helmet.referrerPolicy
,里面设置了Referrer-Policy
header,估计没用
helmet.xssFilter
,里面设置了X-XSS-Protection
header,估计没用
总而言之:其中一些可能有用——为了安全起见,可能值得设置其中一些 header。
问题:
休息时应使用哪些头盔模块API?
背景:
我正在构建 Node/Express REST Api 并不断看到 Helmet 作为我应该使用的安全中间件弹出。查看 Helmet 的文档,似乎某些模块(内容安全策略、跨域等)仅适用于前端应用程序。 Helmet中应该使用哪些模块休息API?
人们在 restful api 中使用 Helmet 的重要原因是为了避免 (XSS) 和脚本注入。你所要做的就是这个。请记住,它只是一个快速中间件。
const helmet = require("helmet");
app.use(helmet())
头盔是一个 Express.js 中间件。并用于避免脚本注入。当你初始化你的应用程序时,像这样使用头盔:
const express = require('express');
const helmet = require('helmet');
const app = express();
app.use(helmet());
希望对您有所帮助:)
tl;dr:以下可能对 API 有用,但您可以设置更多以确保安全:
helmet.expectCt
,它设置了Expect-CT
header,如果您的 API 的消费者知道如何处理证书透明性 ,这将很有用
helmet.frameguard
,它设置了X-Frame-Options
header,如果你的 API 响应被放入iframe
或类似的,它是有用的。 (我个人对此有 运行。)helmet.hsts
,设置Strict-Transport-Security
header,有助于让用户继续使用 HTTPShelmet.noSniff
,它设置X-Content-Type-Options
header,在浏览器中很有用,这些浏览器可能会尝试 auto-detect 您的 API 响应的类型并做一些意想不到的事情. (我个人对此有 运行。)helmet.permittedCrossDomainPolicies
,它设置了X-Permitted-Cross-Domain-Policies
header,可能有助于保护您的网站免受来自 Flash 等 Adobe 产品的奇怪请求
这里是头盔的作者。
我想说使用 Helmet(或它设置的 HTTP headers)有两个原因 API:
- 一些 header 在 non-browser 用例中很有用,比如 REST API.
- 以防您的响应被加载到浏览器中。例如,如果黑客将其放入
<iframe>
并导致意外发生。 (旧浏览器有时会在这里出现问题,导致漏洞。)你也可以对 future-proof 你的 API 这样做,以防它 是 曾经在浏览器中加载过,即使如果不是今天。
Helmet 只是 collection 13 个较小的中间件。其中大多数设置单个 HTTP 响应 header,而其中大多数 header 仅在浏览器中有用。然而,有些偶尔对 APIs(REST 或其他)有用。
让我们列举一下:
helmet.contentSecurityPolicy
,里面设置了Content-Security-Policy
header,估计没用helmet.dnsPrefetchControl
,里面设置了X-DNS-Prefetch-Control
header,估计没用helmet.expectCt
,设置Expect-CT
header, 可能有用 如果您的 API 的消费者知道如何处理证书透明度helmet.featurePolicy
,里面设置了Feature-Policy
header,估计没用helmet.frameguard
,它设置X-Frame-Options
header, 可能有用 ,以防您的 API 响应被放置变成iframe
或类似的。 (我个人对此有 运行。)helmet.hidePoweredBy
,它删除了X-Powered-By
header,可能没有用(在浏览器中甚至没那么有用!)helmet.hsts
,设置Strict-Transport-Security
header, 可能有用 让用户保持在 HTTPShelmet.ieNoOpen
,里面设置了X-Download-Options
header,估计没用helmet.noCache
将在未来的 Helmet 版本中被删除,并且无论如何对安全性都不是很有用,所以它可能没有用helmet.noSniff
,它设置X-Content-Type-Options
header, 可能在浏览器中有用 可能会尝试 auto-detect 您的API 响应的类型并做一些意想不到的事情。 (我个人对此有 运行。)helmet.permittedCrossDomainPolicies
,设置X-Permitted-Cross-Domain-Policies
header, 可能有用 来保护您的站点免受来自 Adobe 产品(如 Flash)的奇怪请求helmet.referrerPolicy
,里面设置了Referrer-Policy
header,估计没用helmet.xssFilter
,里面设置了X-XSS-Protection
header,估计没用
总而言之:其中一些可能有用——为了安全起见,可能值得设置其中一些 header。