Documentation
¶
Index ¶
- Constants
- Variables
- func AuthMiddleware() gin.HandlerFunc
- func CorsMiddleware() gin.HandlerFunc
- func ErrorHandler() gin.HandlerFunc
- func Logger() gin.HandlerFunc
- func RateLimit(max int, duration time.Duration) gin.HandlerFunc
- func Recovery() gin.HandlerFunc
- func RequestID() gin.HandlerFunc
- func Security() gin.HandlerFunc
- type IPRateLimiter
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 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 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的速率限制器,如果不存在则创建一个
Click to show internal directories.
Click to hide internal directories.