Files
silk/server-go/internal/middleware/security.go
T

21 lines
902 B
Go

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()
}
}