mirror of
https://github.com/gofiber/fiber.git
synced 2025-05-31 11:52:41 +00:00
CSRF
CSRF middleware for Fiber that provides Cross-site request forgery protection by passing a csrf token via cookies. This cookie value will be used to compare against the client csrf token in POST requests. When the csrf token is invalid, this middleware will delete the _csrf
cookie and return the fiber.ErrForbidden
error.
CSRF Tokens are generated on GET requests.
Table of Contents
Signatures
func New(config ...Config) fiber.Handler
Examples
Import the middleware package that is part of the Fiber web framework
import (
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/csrf"
)
After you initiate your Fiber app, you can use the following possibilities:
// Initialize default config
app.Use(csrf.New())
// Or extend your config for customization
app.Use(csrf.New(csrf.Config{
TokenLookup: "header:X-CSRF-Token",
ContextKey: "csrf",
Cookie: &fiber.Cookie{
Name: "_csrf",
},
Expiration: 24 * time.Hour,
}))
Config
// Config defines the config for middleware.
type Config struct {
// Next defines a function to skip this middleware when returned true.
//
// Optional. Default: nil
Next func(c *fiber.Ctx) bool
// TokenLookup is a string in the form of "<source>:<key>" that is used
// to extract token from the request.
//
// Optional. Default value "header:X-CSRF-Token".
// Possible values:
// - "header:<name>"
// - "query:<name>"
// - "param:<name>"
// - "form:<name>"
// - "cookie:<name>"
TokenLookup string
// Cookie
//
// Optional.
Cookie *fiber.Cookie
// Expiration is the duration before csrf token will expire
//
// Optional. Default: 1 * time.Hour
Expiration time.Duration
// Store is used to store the state of the middleware
//
// Default: an in memory store for this process only
Storage fiber.Storage
// Context key to store generated CSRF token into context.
//
// Optional. Default value "csrf".
ContextKey string
// Optional. ID generator function.
//
// Default: utils.UUID
Generator func() string
}
Default Config
var ConfigDefault = Config{
Next: nil,
TokenLookup: "header:X-CSRF-Token",
ContextKey: "csrf",
Cookie: &fiber.Cookie{
Name: "_csrf",
SameSite: "Strict",
},
Expiration: 1 * time.Hour,
Generator: utils.UUID,
}