fastify/csrf
GitHub: fastify/csrf
为Node.js/Fastify提供CSRF令牌生成与验证的底层安全工具库。
Stars: 17 | Forks: 4
# CSRF
[](https://github.com/fastify/csrf/actions/workflows/ci.yml)
[](https://www.npmjs.com/package/@fastify/csrf)
[](https://github.com/neostandard/neostandard)
CSRF token 创建与验证背后的逻辑。
阅读 [Understanding-CSRF](https://github.com/pillarjs/understanding-csrf)
以获取关于 CSRF 的更多信息。使用此模块来创建自定义 CSRF 中间件。
正在为你喜欢的框架寻找使用此模块的 CSRF 框架?
* Express/connect: [csurf](https://www.npmjs.com/package/csurf) 或
[alt-xsrf](https://www.npmjs.com/package/alt-xsrf)
* Koa: [koa-csrf](https://www.npmjs.com/package/koa-csrf) 或
[koa-atomic-session](https://www.npmjs.com/package/koa-atomic-session)
此模块是 https://github.com/pillarjs/csrf 在 f0d66c91ea4be6d30a03bd311ed9518951d9c3e4 处的分叉。
### 安装
```
$ npm i @fastify/csrf
```
### TypeScript
此模块包含一个 [TypeScript](https://www.typescriptlang.org/)
声明文件,以便在兼容的编辑器中启用自动补全,并为 TypeScript 项目提供类型
信息。
## API
```
const Tokens = require('@fastify/csrf')
```
### new Tokens([options])
创建一个新的 token 生成/验证实例。`options` 参数是
可选的,如果缺失将直接使用所有默认值。
#### Options
Tokens 在 options 对象中接受这些属性。
##### algorithm
用于生成 token 的哈希算法。默认为 `sha256`。
##### saltLength
使用的内部盐值的长度,以字符计。在内部,盐值是一个 base 62 字符串。默认为 `8` 个字符。
##### secretLength
生成的密钥的长度,以字节计。请注意,密钥在传递时是 base-64 编码的,此长度指的是底层
字节,而不是 base-64 字符串的长度。默认为 `18` 个字节。
##### userInfo
要求在 `tokens.create()` 和 `tokens.verify()` 中包含特定于用户的信息。
##### hmacKey
设置后,`hmacKey` 将用于生成加密 HMAC 哈希,而不是默认的哈希函数。
##### validity
生成的 token 的最大有效期,以毫秒计。请注意,epoch 在传递时是 base-36 编码的。默认为 `0` 毫秒(禁用)。
#### tokens.create(secret[, userInfo])
创建一个新的 CSRF token 并附加到给定的 `secret` 上。`secret` 是一个
字符串,通常通过 `tokens.secret()` 或 `tokens.secretSync()`
方法生成。此 token 是你应该添加到 HTML `
标签:CSRF, Fastify, GNU通用公共许可证, MITM代理, Node.js, NPM包, OSV-Scalibr, SHA-256, TypeScript, Web安全, 令牌生成, 令牌验证, 加密, 后端开发, 安全中间件, 安全插件, 开发库, 数据可视化, 漏洞扫描器, 自定义脚本, 蓝队分析, 跨站请求伪造, 防护工具