Merge pull request 'Add security response headers' (#45) from fix/security-headers into main

Reviewed-on: https://git.ts.mattnite.net/mattnite/forgejo-tickets/pulls/45
This commit is contained in:
Matthew Knight 2026-02-18 00:17:41 +00:00
commit 9e4eef294a
3 changed files with 14 additions and 0 deletions

View File

@ -29,6 +29,7 @@ func NewRouter(deps Dependencies) *gin.Engine {
r.Use(middleware.RequestID)
r.Use(middleware.Logging)
r.Use(middleware.Recovery)
r.Use(middleware.SecurityHeaders(strings.HasPrefix(deps.Config.BaseURL, "https")))
tsAuth := &TailscaleAuth{allowedUsers: deps.Config.TailscaleAllowedUsers}
r.Use(tsAuth.Middleware)

View File

@ -31,6 +31,7 @@ func NewRouter(deps Dependencies) *gin.Engine {
r.Use(middleware.RequestID)
r.Use(middleware.Logging)
r.Use(middleware.Recovery)
r.Use(middleware.SecurityHeaders(strings.HasPrefix(deps.Config.BaseURL, "https")))
r.Use(deps.Auth.SessionMiddleware)
csrfSecret := []byte(deps.Config.SessionSecret)

View File

@ -44,3 +44,15 @@ func Recovery(c *gin.Context) {
}()
c.Next()
}
func SecurityHeaders(secure bool) gin.HandlerFunc {
return func(c *gin.Context) {
c.Header("X-Content-Type-Options", "nosniff")
c.Header("X-Frame-Options", "DENY")
c.Header("Referrer-Policy", "strict-origin-when-cross-origin")
if secure {
c.Header("Strict-Transport-Security", "max-age=63072000; includeSubDomains")
}
c.Next()
}
}