From 7f0f691ba590f8ef7cbc6f58eb9ff6b6198dc939 Mon Sep 17 00:00:00 2001 From: David Chandek-Stark Date: Wed, 7 May 2025 23:35:42 -0400 Subject: [PATCH] Trim spaces from elements of split XFF string (#459) * Trim spaces from elements of split XFF string * Adds test to verify that spaces in original XFF header are handled --- internal/headers.go | 3 +++ internal/xff_test.go | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/internal/headers.go b/internal/headers.go index 639d2b1..2596a02 100644 --- a/internal/headers.go +++ b/internal/headers.go @@ -134,6 +134,9 @@ func computeXFFHeader(remoteAddr string, origXFFHeader string, pref XFFComputePr origForwardedList := make([]string, 0, 4) if origXFFHeader != "" { origForwardedList = strings.Split(origXFFHeader, ",") + for i := range origForwardedList { + origForwardedList[i] = strings.TrimSpace(origForwardedList[i]) + } } origForwardedList = append(origForwardedList, parsedRemoteIP.String()) forwardedList := make([]string, 0, len(origForwardedList)) diff --git a/internal/xff_test.go b/internal/xff_test.go index 26bb0e6..3a890ab 100644 --- a/internal/xff_test.go +++ b/internal/xff_test.go @@ -130,6 +130,19 @@ func TestComputeXFFHeader(t *testing.T) { }, result: "1.1.1.1", }, + { + name: "TrimSpaces", + remoteAddr: "127.0.0.1:80", + origXFFHeader: "1.1.1.1, 10.0.0.1, fe80::, 100.64.0.1, 169.254.0.1", + pref: XFFComputePreferences{ + StripPrivate: true, + StripLoopback: true, + StripCGNAT: true, + StripLLU: true, + Flatten: true, + }, + result: "1.1.1.1", + }, { name: "invalid-ip-port", remoteAddr: "fe80::",