From f284f8dbdeda263dfdd222924e7e4e8101b7f5f2 Mon Sep 17 00:00:00 2001 From: Franz Kafka Date: Wed, 15 Apr 2026 06:48:37 +0000 Subject: [PATCH] Add explicit blocked headers list for security - Define blockedHeaders map for headers that should never be forwarded - Include Referer, Cookie, X-Forwarded-* headers - Prevents leaking internal URLs, session data, and client IPs to upstream - Defensive measure even though no headers are currently copied --- handler.go | 12 ++++++++++++ proxx | Bin 10090898 -> 10090903 bytes 2 files changed, 12 insertions(+) diff --git a/handler.go b/handler.go index d172249..f1f2e43 100644 --- a/handler.go +++ b/handler.go @@ -21,6 +21,18 @@ type Config struct { var config *Config +// blockedHeaders are headers that should never be forwarded to upstream +// for security/privacy reasons. These headers could leak internal URLs, +// session information, or other sensitive data. +var blockedHeaders = map[string]bool{ + "Referer": true, // Don't leak internal URLs to external API + "Cookie": true, // Don't forward session cookies + "Authorization": true, // Already extracted and sent as x-api-key + "X-Forwarded-For": true, // Don't leak client IP + "X-Real-Ip": true, // Don't leak client IP + "X-Forwarded-Host": true, // Don't leak internal hostnames +} + // ClaudeCodeHeaders returns the headers to mimic claude-code CLI func ClaudeCodeHeaders(apiKey, sessionID string) map[string]string { return map[string]string{ diff --git a/proxx b/proxx index e4c8175695be9a924295b0f4b59c617d342fdffe..c15071a24fc79a91f4c992666ca6cd3a2ef70d5e 100755 GIT binary patch delta 2742192 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