CSRF
Hertz 提供了 CSRF 中间件,可帮助您防止跨站点请求伪造攻击。
Cross-site request forgery(CSRF)是一种挟制用户在当前已登录的 Web 应用程序上执行非本意的操作的攻击方法。
Hertz 提供了 CSRF 中间件,可帮助您防止跨站点请求伪造攻击。
安装
示例代码
配置
配置项 | 默认值 | 介绍 |
---|---|---|
Secret | csrfSecret | 用于生成令牌(必要配置) |
IgnoreMethods | “GET”, “HEAD”, “OPTIONS”, “TRACE” | 被忽略的方法将将视为无需 csrf 保护 |
Next | nil | Next 定义了一个函数,当返回真时,跳过这个 csrf 中间件。 |
KeyLookup | header:X-CSRF-TOKEN | KeyLookup 是一个" |
ErrorFunc | func(ctx context.Context, c *app.RequestContext) { panic(c.Errors.Last()) } | 当 app.HandlerFunc 返回一个错误时,ErrorFunc 被执行 |
Extractor | 基于 KeyLookup 创建 | Extractor 返回csrf token 。如果设置了这个,它将被用来代替基于 KeyLookup 的 Extractor 。 |
WithSecret
csrf
中间件提供了 WithSecret
用于帮助用户设置自定义秘钥用于签发 token
,默认为 csrfSecret
。
函数签名:
默认值:csrfSecret
示例代码:
WithIgnoredMethods
csrf
中间件提供了 WithIgnoredMethods
用于帮助用户设置自定义无需保护的方法,默认为 GET
, HEAD
, OPTIONS
和 TRACE
。
函数签名:
默认值:{"GET", "HEAD", "OPTIONS", "TRACE"}
示例代码:
WithErrorFunc
csrf
中间件提供了 WithErrorFunc
方便用户自定义错误处理逻辑。
函数签名:
默认实现:
示例代码:
WithKeyLookUp
csrf
中间件提供了 WithKeyLookUp
帮助用户设置 keyLookup
。
csrf
用于从 source
(支持的 source
包括 header
、param
、query
、form
) 中提取 token
。
格式为 <source>:<key>
,默认值为:header:X-CSRF-TOKEN
。
函数签名:
默认值:header:X-CSRF-TOKEN"
示例代码:
WithNext
csrf
中间件提供了 WithNext
方便用户自定义设置,以在特定条件下跳过 csrf
中间件。
函数签名:
默认:nil
示例代码:
WithExtractor
csrf
中间件提供了 WithExtractor
,供用户通过自定义的方法从请求中获取 csrf-token
。
函数签名:
默认实现:
示例代码:
最后修改
January 24, 2025
: docs: eino image resize (#1219) (dbe848a)