Security
CSRF保护
学习如何在NestJS应用中实现CSRF(跨站请求伪造)保护,防止未授权的恶意请求攻击
CSRF保护
跨站请求伪造(CSRF或XSRF)是一种攻击类型,其中未授权的命令从受信任的用户发送到Web应用程序。为了帮助防止这种情况,您可以使用csrf-csrf包。
与Express一起使用(默认)
首先安装所需的包:
$ npm i csrf-csrf
警告 如csrf-csrf文档中所述,此中间件需要事先初始化会话中间件或cookie-parser。请参阅文档了解更多详细信息。
安装完成后,将csrf-csrf中间件注册为全局中间件。
import { doubleCsrf } from 'csrf-csrf';
// ...
// 在您的初始化文件中的某处
const {
invalidCsrfTokenError, // 如果您计划创建自己的中间件,这纯粹是为了方便而提供的。
generateToken, // 在您的路由中使用它来生成和提供CSRF哈希,以及令牌cookie和令牌。
validateRequest, // 如果您计划制作自己的中间件,这也是一个便利功能。
doubleCsrfProtection, // 这是默认的CSRF保护中间件。
} = doubleCsrf(doubleCsrfOptions);
app.use(doubleCsrfProtection);
与Fastify一起使用
首先安装所需的包:
$ npm i --save @fastify/csrf-protection
安装完成后,注册@fastify/csrf-protection插件,如下所示:
import fastifyCsrf from '@fastify/csrf-protection';
// ...
// 在注册某些存储插件后,在您的初始化文件中的某处
await app.register(fastifyCsrf);
警告 如@fastify/csrf-protection文档这里所解释的,此插件需要首先初始化存储插件。请参阅该文档以获取进一步的说明。