package middleware import ( "github.com/gin-gonic/gin" ) // SecurityHeaders 统一补齐 HTTP 安全响应头,缓解点击劫持、MIME 嗅探等风险 func SecurityHeaders() gin.HandlerFunc { return func(c *gin.Context) { h := c.Writer.Header() h.Set("X-Content-Type-Options", "nosniff") h.Set("X-Frame-Options", "DENY") h.Set("Referrer-Policy", "no-referrer") // 限制内联脚本/样式以缓解 XSS;允许同源与必要的外部资源 h.Set("Content-Security-Policy", "default-src 'self'; img-src 'self' data: blob:; media-src 'self' blob:; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline'; connect-src 'self' ws: wss:; font-src 'self' data:; object-src 'none'; frame-ancestors 'none'") // 仅在内网 HTTPS 网关后运行时生效;HTTP 下浏览器会忽略 h.Set("Strict-Transport-Security", "max-age=31536000; includeSubDomains") c.Next() } }