package middleware import ( ginI18n "github.com/gin-contrib/i18n" "github.com/gin-gonic/gin" "schisandra-cloud-album/common/result" "schisandra-cloud-album/global" "strings" ) func SecurityHeaders() gin.HandlerFunc { return func(c *gin.Context) { url := strings.TrimPrefix(global.CONFIG.System.Web, "https://") requestHost := c.Request.Host if requestHost != url { result.FailWithMessage(ginI18n.MustGetMessage(c, "IllegalRequests"), c) c.Abort() return } c.Header("X-Frame-Options", "DENY") c.Header("Content-Security-Policy", "default-src 'self'; connect-src *; font-src *; script-src-elem * 'unsafe-inline'; img-src * data:; style-src * 'unsafe-inline';") c.Header("X-XSS-Protection", "1; mode=block") c.Header("Strict-Transport-Security", "max-age=31536000; includeSubDomains; preload") c.Header("Referrer-Policy", "strict-origin") c.Header("X-Content-Type-Options", "nosniff") c.Header("Permissions-Policy", "geolocation=(),midi=(),sync-xhr=(),microphone=(),camera=(),magnetometer=(),gyroscope=(),fullscreen=(self),payment=()") c.Next() } }