Referer logging Check

This commit is contained in:
2025-08-01 02:08:59 +01:00
parent df0294c754
commit e0bd9295c7
+23 -12
View File
@@ -1,6 +1,7 @@
package main
import (
"log"
"net/http"
"strings"
@@ -25,23 +26,33 @@ func RefererCheck(allowedOrigins []string) func(http.Handler) http.Handler {
return func(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
referer := r.Header.Get("Referer")
origin := r.Header.Get("Origin")
// Block requests with no referer (this blocks direct browser requests)
if referer == "" {
http.Error(w, "Forbidden!", http.StatusForbidden)
return
}
// Debug logging
log.Printf("RefererCheck - Referer: '%s', Origin: '%s', AllowedOrigins: %+v", referer, origin, allowedOrigins)
log.Printf("Request headers: %+v", r.Header)
// Check if referer matches allowed origins
for _, origin := range allowedOrigins {
if strings.HasPrefix(referer, origin) {
next.ServeHTTP(w, r)
return
// Check both Referer and Origin headers
if referer != "" {
for _, allowedOrigin := range allowedOrigins {
if strings.HasPrefix(referer, strings.TrimSuffix(allowedOrigin, "/")) {
next.ServeHTTP(w, r)
return
}
}
}
// Block if referer doesn't match any allowed origin
http.Error(w, "Forbidden!", http.StatusForbidden)
if origin != "" {
for _, allowedOrigin := range allowedOrigins {
if origin == strings.TrimSuffix(allowedOrigin, "/") {
next.ServeHTTP(w, r)
return
}
}
}
log.Printf("RefererCheck - BLOCKED: No valid referer or origin found")
http.Error(w, "Forbidden", http.StatusForbidden)
})
}
}