middleware helemt changes

This commit is contained in:
Ankit Patial 2025-03-21 13:00:31 +05:30
parent aa6ba87f4e
commit e6a8880fd3
4 changed files with 11 additions and 16 deletions

View File

@ -4,8 +4,8 @@ import (
"log/slog" "log/slog"
"net/http" "net/http"
"gitserver.in/patialtech/mux" "code.patial.tech/go/mux"
"gitserver.in/patialtech/mux/middleware" "code.patial.tech/go/mux/middleware"
) )
func main() { func main() {

4
go.mod
View File

@ -1,3 +1,3 @@
module gitserver.in/patialtech/mux module code.patial.tech/go/mux
go 1.23.2 go 1.24

View File

@ -102,19 +102,16 @@ const (
YearDuration = 365 * 24 * 60 * 60 YearDuration = 365 * 24 * 60 * 60
// EmbedderDefault default value will be "require-corp" // EmbedderDefault default value will be "require-corp"
EmbedderDefault Embedder = ""
EmbedderRequireCorp Embedder = "require-corp" EmbedderRequireCorp Embedder = "require-corp"
EmbedderCredentialLess Embedder = "credentialless" EmbedderCredentialLess Embedder = "credentialless"
EmbedderUnsafeNone Embedder = "unsafe-none" EmbedderUnsafeNone Embedder = "unsafe-none"
// OpenerDefault default value will be "same-origin" // OpenerDefault default value will be "same-origin"
OpenerDefault Opener = ""
OpenerSameOrigin Opener = "same-origin" OpenerSameOrigin Opener = "same-origin"
OpenerSameOriginAllowPopups Opener = "same-origin-allow-popups" OpenerSameOriginAllowPopups Opener = "same-origin-allow-popups"
OpenerUnsafeNone Opener = "unsafe-none" OpenerUnsafeNone Opener = "unsafe-none"
// ResourceDefault default value will be "same-origin" // ResourceDefault default value will be "same-origin"
ResourceDefault Resource = ""
ResourceSameOrigin Resource = "same-origin" ResourceSameOrigin Resource = "same-origin"
ResourceSameSite Resource = "same-site" ResourceSameSite Resource = "same-site"
ResourceCrossOrigin Resource = "cross-origin" ResourceCrossOrigin Resource = "cross-origin"
@ -129,14 +126,12 @@ const (
UnsafeUrl Referrer = "unsafe-url" UnsafeUrl Referrer = "unsafe-url"
// CDPDefault default value is "none" // CDPDefault default value is "none"
CDPDefault CDP = ""
CDPNone CDP = "none" CDPNone CDP = "none"
CDPMasterOnly CDP = "master-only" CDPMasterOnly CDP = "master-only"
CDPByContentType CDP = "by-content-type" CDPByContentType CDP = "by-content-type"
CDPAll CDP = "all" CDPAll CDP = "all"
// XFrameDefault default value will be "sameorigin" // XFrameDefault default value will be "sameorigin"
XFrameDefault XFrame = ""
XFrameSameOrigin XFrame = "sameorigin" XFrameSameOrigin XFrame = "sameorigin"
XFrameDeny XFrame = "deny" XFrameDeny XFrame = "deny"
) )
@ -148,21 +143,21 @@ func Helmet(opt HelmetOption) func(http.Handler) http.Handler {
w.Header().Add("Content-Security-Policy", opt.ContentSecurityPolicy.value()) w.Header().Add("Content-Security-Policy", opt.ContentSecurityPolicy.value())
// Cross-Origin-Embedder-Policy, if nil set default // Cross-Origin-Embedder-Policy, if nil set default
if opt.CrossOriginEmbedderPolicy == EmbedderDefault { if opt.CrossOriginEmbedderPolicy == "" {
w.Header().Add("Cross-Origin-Embedder-Policy", string(EmbedderRequireCorp)) w.Header().Add("Cross-Origin-Embedder-Policy", string(EmbedderRequireCorp))
} else { } else {
w.Header().Add("Cross-Origin-Embedder-Policy", string(opt.CrossOriginEmbedderPolicy)) w.Header().Add("Cross-Origin-Embedder-Policy", string(opt.CrossOriginEmbedderPolicy))
} }
// Cross-Origin-Opener-Policy, if nil set default // Cross-Origin-Opener-Policy, if nil set default
if opt.CrossOriginOpenerPolicy == OpenerDefault { if opt.CrossOriginOpenerPolicy == "" {
w.Header().Add("Cross-Origin-Opener-Policy", string(OpenerSameOrigin)) w.Header().Add("Cross-Origin-Opener-Policy", string(OpenerSameOrigin))
} else { } else {
w.Header().Add("Cross-Origin-Opener-Policy", string(opt.CrossOriginOpenerPolicy)) w.Header().Add("Cross-Origin-Opener-Policy", string(opt.CrossOriginOpenerPolicy))
} }
// Cross-Origin-Resource-Policy, if nil set default // Cross-Origin-Resource-Policy, if nil set default
if opt.CrossOriginResourcePolicy == ResourceDefault { if opt.CrossOriginResourcePolicy == "" {
w.Header().Add("Cross-Origin-Resource-Policy", string(ResourceSameOrigin)) w.Header().Add("Cross-Origin-Resource-Policy", string(ResourceSameOrigin))
} else { } else {
w.Header().Add("Cross-Origin-Resource-Policy", string(opt.CrossOriginResourcePolicy)) w.Header().Add("Cross-Origin-Resource-Policy", string(opt.CrossOriginResourcePolicy))
@ -223,13 +218,13 @@ func Helmet(opt HelmetOption) func(http.Handler) http.Handler {
} }
// indicate whether a browser should be allowed to render a page in iframe | frame | embed | object // indicate whether a browser should be allowed to render a page in iframe | frame | embed | object
if opt.XFrameOption == XFrameDefault { if opt.XFrameOption == "" {
w.Header().Add("X-Frame-Options", string(XFrameSameOrigin)) w.Header().Add("X-Frame-Options", string(XFrameSameOrigin))
} else { } else {
w.Header().Add("X-Frame-Options", string(opt.XFrameOption)) w.Header().Add("X-Frame-Options", string(opt.XFrameOption))
} }
if opt.CrossDomainPolicies == CDPDefault { if opt.CrossDomainPolicies == "" {
w.Header().Add("X-Permitted-Cross-Domain-Policies", string(CDPNone)) w.Header().Add("X-Permitted-Cross-Domain-Policies", string(CDPNone))
} else { } else {
w.Header().Add("X-Permitted-Cross-Domain-Policies", string(opt.CrossDomainPolicies)) w.Header().Add("X-Permitted-Cross-Domain-Policies", string(opt.CrossDomainPolicies))

View File

@ -6,13 +6,13 @@ import (
"net/http/httptest" "net/http/httptest"
"testing" "testing"
"gitserver.in/patialtech/mux" "code.patial.tech/go/mux"
) )
func TestHelmet(t *testing.T) { func TestHelmet(t *testing.T) {
r := mux.NewRouter() r := mux.NewRouter()
r.Use(Helmet(HelmetOption{})) r.Use(Helmet(HelmetOption{}))
r.Get("/hello", func(writer http.ResponseWriter, request *http.Request) { r.GET("/hello", func(writer http.ResponseWriter, request *http.Request) {
_, _ = writer.Write([]byte("hello there")) _, _ = writer.Write([]byte("hello there"))
}) })