Skip to content

CSRF 防护

跨站请求伪造(CSRF 或 XSRF)是一种攻击类型,未经授权的命令从受信任的用户发送到 Web 应用程序。要帮助防止此类攻击,你可以使用 csrf-csrf 包。

在 Express 中使用(默认)

首先安装所需的包:

bash
$ npm i csrf-csrf

警告

csrf-csrf 文档中所述,此中间件需要预先初始化会话中间件或 cookie-parser。请参阅文档了解更多详情。

安装完成后,将 csrf-csrf 中间件注册为全局中间件。

typescript
import { doubleCsrf } from 'csrf-csrf';
// ...
// 在你的初始化文件中的某处
const {
  invalidCsrfTokenError, // 这纯粹是为了方便提供的,以防你计划创建自己的中间件。
  generateToken, // 在你的路由中使用它来生成和提供 CSRF 哈希,以及 token cookie 和 token。
  validateRequest, // 同样是为了方便,以防你计划创建自己的中间件。
  doubleCsrfProtection, // 这是默认的 CSRF 保护中间件。
} = doubleCsrf(doubleCsrfOptions);
app.use(doubleCsrfProtection);

在 Fastify 中使用

首先安装所需的包:

bash
$ npm i --save @fastify/csrf-protection

安装完成后,注册 @fastify/csrf-protection 插件,如下所示:

typescript
import fastifyCsrf from '@fastify/csrf-protection';
// ...
// 在你的初始化文件中注册某个存储插件之后的某处
await app.register(fastifyCsrf);

警告

@fastify/csrf-protection 文档此处所述,此插件需要先初始化一个存储插件。请参阅该文档了解更多说明。

基于 NestJS 官方文档翻译