Skip to content

Commit

Permalink
feat: add CSP and other security related headers in the oCIS proxy se…
Browse files Browse the repository at this point in the history
…rvice
  • Loading branch information
DeepDiver1975 committed Apr 4, 2024
1 parent 0272f94 commit 669fd12
Show file tree
Hide file tree
Showing 16 changed files with 1,427 additions and 0 deletions.
5 changes: 5 additions & 0 deletions changelog/unreleased/csp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Enhancement: Add CSP and other security related headers to oCIS

General hardening of oCIS

https://github.com/owncloud/ocis/pull/8777
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ require (
github.com/thejerf/suture/v4 v4.0.5
github.com/tidwall/gjson v1.17.1
github.com/tus/tusd v1.13.0
github.com/unrolled/secure v1.14.0
github.com/urfave/cli/v2 v2.27.1
github.com/xhit/go-simple-mail/v2 v2.16.0
go-micro.dev/v4 v4.10.2
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -2028,6 +2028,8 @@ github.com/tus/tusd v1.13.0 h1:W7rtb1XPSpde/GPZAgdfUS3vus2Jt2KmckS6OUd3CU8=
github.com/tus/tusd v1.13.0/go.mod h1:1tX4CDGlx8koHGFJdSaJ5ybUIm2NeVloJgZEPSKRcQA=
github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
github.com/uber-go/atomic v1.3.2/go.mod h1:/Ct5t2lcmbJ4OSe/waGBoaVvVqtO0bmtfVNex1PFV8g=
github.com/unrolled/secure v1.14.0 h1:u9vJTU/pR4Bny0ntLUMxdfLtmIRGvQf2sEFuA0TG9AE=
github.com/unrolled/secure v1.14.0/go.mod h1:BmF5hyM6tXczk3MpQkFf1hpKSRqCyhqcbiQtiAF7+40=
github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
github.com/urfave/cli/v2 v2.27.1 h1:8xSQ6szndafKVRmfyeUMxkNUJQMjL1F2zmsZ+qHpfho=
Expand Down
1 change: 1 addition & 0 deletions services/proxy/pkg/command/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -313,6 +313,7 @@ func loadMiddlewares(ctx context.Context, logger log.Logger, cfg *config.Config,
chimiddleware.RequestID,
middleware.AccessLog(logger),
middleware.HTTPSRedirect,
middleware.Security(),
router.Middleware(cfg.PolicySelector, cfg.Policies, logger),
middleware.Authentication(
authenticators,
Expand Down
40 changes: 40 additions & 0 deletions services/proxy/pkg/middleware/security.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package middleware

import (
"github.com/unrolled/secure"
"github.com/unrolled/secure/cspbuilder"
"net/http"
)

// Security is a middleware to apply security relevant http headers like CSP.
func Security() func(h http.Handler) http.Handler {
// some way to configure them is necessary for external integrations
// e.g. draw.io, OnlyOffice, Collabora ....
cspBuilder := cspbuilder.Builder{
Directives: map[string][]string{
cspbuilder.ConnectSrc: {"'self'"},
cspbuilder.ChildSrc: {"'self'", "https://embed.diagrams.net/"},
cspbuilder.DefaultSrc: {"'none'"},
cspbuilder.FontSrc: {"'self'"},
cspbuilder.FrameSrc: {"'self'", "blob:"},
cspbuilder.ImgSrc: {"'self'", "data:", "blob:"},
cspbuilder.ManifestSrc: {"'self'"},
cspbuilder.MediaSrc: {"'self'"},
cspbuilder.ObjectSrc: {"'self'", "blob:"},
cspbuilder.ScriptSrc: {"'self'", "'unsafe-inline'"},
cspbuilder.StyleSrc: {"'self'", "'unsafe-inline'"},
},
}
secureMiddleware := secure.New(secure.Options{
BrowserXssFilter: true,
ContentSecurityPolicy: cspBuilder.MustBuild(),
ContentTypeNosniff: true,
CustomFrameOptionsValue: "SAMEORIGIN",
ReferrerPolicy: "strict-origin-when-cross-origin",
STSSeconds: 315360000,
STSPreload: true,
})
return func(next http.Handler) http.Handler {
return secureMiddleware.Handler(next)
}
}
27 changes: 27 additions & 0 deletions vendor/github.com/unrolled/secure/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

36 changes: 36 additions & 0 deletions vendor/github.com/unrolled/secure/.golangci.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 20 additions & 0 deletions vendor/github.com/unrolled/secure/LICENSE

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions vendor/github.com/unrolled/secure/Makefile

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 669fd12

Please sign in to comment.