middlewares

package
v0.0.0-...-5dd4bcd Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 2, 2025 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const RequestIDHeaderName = "X-Request-ID"

RequestIDHeaderName 请求ID的HTTP头名称

Variables

View Source
var ContentSecurityPolicy = "default-src 'self'; " +
	"script-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://cdn.jsdelivr.net; " +
	"style-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net https://fonts.googleapis.com; " +
	"img-src 'self' data: https://cdn.jsdelivr.net; " +
	"font-src 'self' https://fonts.gstatic.com https://cdn.jsdelivr.net; " +
	"object-src 'none'; " +
	"base-uri 'self'; " +
	"form-action 'self'; " +
	"frame-ancestors 'none'; " +
	"upgrade-insecure-requests; " +
	"block-all-mixed-content;"

ContentSecurityPolicy 配置

View Source
var SecurityHeaders = map[string]string{
	"X-Content-Type-Options":    "nosniff",
	"X-Frame-Options":           "DENY",
	"X-XSS-Protection":          "1; mode=block",
	"Referrer-Policy":           "strict-origin-when-cross-origin",
	"Permissions-Policy":        "accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), payment=(), usb=()",
	"Strict-Transport-Security": "max-age=31536000; includeSubDomains",
	"Content-Security-Policy":   "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests; block-all-mixed-content",
}

SecurityHeaders 添加安全相关的HTTP头

Functions

func AuthMiddleware

func AuthMiddleware() gin.HandlerFunc

AuthMiddleware 验证JWT令牌的中间件

func CorsMiddleware

func CorsMiddleware() gin.HandlerFunc

CorsMiddleware 配置CORS

func ErrorHandler

func ErrorHandler() gin.HandlerFunc

ErrorHandler 错误处理中间件 捕获请求处理过程中产生的错误,并返回标准格式的错误响应

func Logger

func Logger() gin.HandlerFunc

Logger 中间件 记录请求的处理时间和响应状态 输出格式: [请求方法] [状态码] [路径] [客户端IP] [响应时间] [错误信息]

func RateLimit

func RateLimit(max int, duration time.Duration) gin.HandlerFunc

RateLimit 创建一个限流中间件 参数: - max: 在time.Duration内允许的最大请求数 - duration: 限流的时间窗口

func Recovery

func Recovery() gin.HandlerFunc

Recovery 恢复中间件 捕获 panic,记录错误堆栈,并返回统一的错误响应

func RequestID

func RequestID() gin.HandlerFunc

RequestID 中间件 为每个请求生成一个唯一ID,并添加到请求上下文和响应头中 可用于跟踪和调试请求

func Security

func Security() gin.HandlerFunc

Security 中间件设置安全相关的HTTP头 添加各种安全头,如内容安全策略、XSS保护等 参考: https://owasp.org/www-project-secure-headers/

Types

type IPRateLimiter

type IPRateLimiter struct {
	// contains filtered or unexported fields
}

IPRateLimiter 基于IP的限流器.

func NewIPRateLimiter

func NewIPRateLimiter(r rate.Limit, b int) *IPRateLimiter

NewIPRateLimiter 创建一个新的IP限流器.

func (*IPRateLimiter) AddIP

func (i *IPRateLimiter) AddIP(ip string) *rate.Limiter

AddIP 为指定IP创建一个新的速率限制器并添加到映射中

func (*IPRateLimiter) GetLimiter

func (i *IPRateLimiter) GetLimiter(ip string) *rate.Limiter

GetLimiter 返回指定IP的速率限制器,如果不存在则创建一个

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL