Helmet
Helmet 可以通过适当设置 HTTP 头来帮助保护你的应用免受一些已知的 Web 漏洞影响。通常,Helmet 只是一组较小的中间件函数的集合,用于设置与安全相关的 HTTP 头(阅读 more)。
info 提示 请注意,将
helmet作为全局应用或注册它,必须在对app.use()的其他调用或可能调用app.use()的设置函数之前进行。这是因为底层平台(即 Express 或 Fastify)的工作方式,其中中间件/路由的定义顺序很重要。如果你在定义路由之后使用像helmet或cors这样的中间件,那么该中间件将不会应用于该路由,它只会应用于之后定义的路由。
使用 Express(默认)
首先安装所需的包。
安装完成后,将其作为全局中间件应用。
warning 警告 当使用
helmet、@apollo/server(4.x)和 Apollo Sandbox 时,Apollo Sandbox 上的 CSP 可能存在问题。要解决此问题,请按如下所示配置 CSP:
使用 Fastify
如果你使用的是 FastifyAdapter,请安装 @fastify/helmet 包:
fastify-helmet 不应作为中间件使用,而应作为 Fastify plugin,即通过使用 app.register():
warning 警告 当使用
apollo-server-fastify和@fastify/helmet时,GraphQL playground 上的 CSP 可能存在问题,要解决此冲突,请按如下所示配置 CSP:

