跨站请求伪造 CSRF

未匹配的标注

CSRF

用于 Fiber 的CSRF中间件,通过 cookies 传递 csrf 令牌来提供 跨站请求伪造 保护。这个 cookie 值将被用来与客户端的 csrf 令牌进行比较,除了那些被 RFC7231 定义为 "安全 "的请求(GET、HEAD、OPTIONS或TRACE/)。当 csrf 令牌无效时,该中间件将返回fiber.ErrForbidden错误。当没有设置_csrfcookie,或令牌已经过期时,将生成一个新的令牌并设置_csrfcookie。

目录

签名

func New(config ...Config) fiber.Handler

示例

导入作为 Fiber 网络框架一部分的中间件包

import (
    "github.com/gofiber/fiber/v2"
    "github.com/gofiber/fiber/v2/middleware/csrf"
)

在你启动你的Fiber应用程序后,你可以使用以下可能性。

//初始化默认配置
app.Use(csrf.New())

//或者扩展你的配置以进行定制
app.Use(csrf.New(csrf.Config{
    KeyLookup:      "header:X-Csrf-Token",
    CookieName:     "csrf_",
    CookieSameSite: "Strict",
    Expiration:     1 * time.Hour,
    KeyGenerator:   utils.UUID,
}))

配置

// Config定义了中间件的配置。
type Config struct {
    // 下一步定义了一个函数,当返回真时跳过这个中间件。
    //
    // 可选。默认值:nil
    Next func(c *fiber.Ctx) bool

    // KeyLookup是一个"<source>:<key>"形式的字符串,用于从请求中提取标记。
    // 从请求中提取token。
    // 可能的值。
    // - "header:<name>"
    // - "query:<name>"
    // - "param:<name>"
    // - "form:<name>"
    // - "cookie:<name>"
    //
    // 可选。默认:"header:X-CSRF-Token"
    KeyLookup string

    // 会话cookie的名称。这个cookie将存储会话密钥。
    // 可选。默认值为"_csrf"。
    CookieName string

    // CSRF cookie的域。
    // 可选。默认值为""。
    CookieDomain string

    // CSRF cookie的路径。
    // 可选。默认值为""。
    CookiePath string

    // 表示CSRF cookie是否安全。
    // 可选。默认值为false。
    CookieSecure bool

    // 表示CSRF cookie是否只适用于HTTP。
    // 可选。默认值为false。
    CookieHTTPOnly bool

    // 表示CSRF cookie是否由SameSite请求。
    // 可选。默认值为 "Lax"。
    CookieSameSite string

    // Expiration是csrf令牌过期前的时间。
    //
    // 可选。默认值:1 * time.Hour
    Expiration time.Duration

    // 存储是用来存储中间件的状态的
    //
    // 可选。默认值:memory.New()
   Storage fiber.Storage

    // 用于将生成的CSRF令牌存储到上下文中的上下文密钥。
    // 如果留空,令牌将不会被存储在上下文中。
    //
    // 可选。默认值:""
    ContextKey string

    // KeyGenerator创建一个新的CSRF令牌
    //
    // 可选。默认值: utils.UUID
    KeyGenerator func() string
}

默认配置

var ConfigDefault = Config{
    KeyLookup:      "header:X-Csrf-Token",
    CookieName:     "csrf_",
    CookieSameSite: "Lax",
    Expiration:     1 * time.Hour,
    KeyGenerator:   utils.UUID,
}

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/gofiber/2.x/csr...

译文地址:https://learnku.com/docs/gofiber/2.x/csr...

上一篇 下一篇
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~