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