Skip to content

Commit 7bffd27

Browse files
authored
Merge pull request #8 from kedeinroga/fix-iac
Deny unauthorized preflight requests
2 parents ca169a7 + 2468fa0 commit 7bffd27

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

internal/middleware/cors.go

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,23 @@ func CORSMiddleware(allowedOrigins, allowedMethods, allowedHeaders []string) gin
1212
// Check if origin is allowed
1313
allowed := false
1414
for _, allowedOrigin := range allowedOrigins {
15-
if allowedOrigin == "*" || allowedOrigin == origin {
15+
if allowedOrigin == "*" {
16+
allowed = true
17+
break
18+
}
19+
if allowedOrigin == origin && origin != "" {
1620
allowed = true
1721
break
1822
}
1923
}
2024

25+
// Only set CORS headers if origin is allowed
2126
if allowed {
22-
if origin != "" {
27+
// If wildcard, use it; otherwise use the specific origin
28+
if len(allowedOrigins) > 0 && allowedOrigins[0] == "*" {
29+
c.Header("Access-Control-Allow-Origin", "*")
30+
} else if origin != "" {
2331
c.Header("Access-Control-Allow-Origin", origin)
24-
} else if len(allowedOrigins) > 0 {
25-
c.Header("Access-Control-Allow-Origin", allowedOrigins[0])
2632
}
2733

2834
c.Header("Access-Control-Allow-Methods", joinStrings(allowedMethods, ", "))
@@ -33,7 +39,11 @@ func CORSMiddleware(allowedOrigins, allowedMethods, allowedHeaders []string) gin
3339

3440
// Handle preflight requests
3541
if c.Request.Method == "OPTIONS" {
36-
c.AbortWithStatus(204)
42+
if allowed {
43+
c.AbortWithStatus(204)
44+
} else {
45+
c.AbortWithStatus(403)
46+
}
3747
return
3848
}
3949

0 commit comments

Comments
 (0)