X-Forwarded-For (XFF), bir istemcinin bir proxy aracılığıyla bir web sunucusuna bağlanırken köken IP adresini tanımlayan bir HTTP istek başlığıdır. Bu başlık olmadan, sunucu yalnızca son proxy'nin IP'sini görür. Başlık, istemcinin IP'sini tasarımı gereği açığa çıkardığı için, bunu ekleyen bir proxy, orijinal adresinizi hedef siteye iletir.
Zincirdeki her proxy, bağlantıyı aldığı IP adresini ekler. En soldaki giriş iddia edilen istemciyi, en sağdaki ise en son proxy'yi temsil eder; örneğin X-Forwarded-For: 203.0.113.195, 198.51.100.178.
Standart Durum ve İlgili Başlıklar
- De facto standart: XFF yaygın olarak kullanılmaktadır ancak mevcut herhangi bir spesifikasyonda tanımlanmamıştır.
- Forwarded başlığı: RFC 7239, aynı bilgi için standart bir
Forwardedbaşlığı tanımlar, ancak pratikte çok daha az kullanılmaktadır. - Eşlik eden başlıklar:
X-Forwarded-Host,X-Forwarded-ProtoveViaile ilgili proxy detaylarını taşır. - Yük dengeleyicileri: Bazı yük dengeleyicileri, istemci IP'sini XFF'ye eklemenize, değiştirilmeden geçmesine veya kaldırılmasına izin verir.
Güven ve Sahtecilik
Bir istemci sahte bir X-Forwarded-For başlığı gönderebilir, bu nedenle yalnızca güvenilir proxy'ler tarafından eklenen adresler güvenilirdir. XFF'yi oran sınırlama veya erişim kontrolü için kullanan sunucular, sağdan başlayarak bilinen güvenilir proxy'leri atlayarak listeyi okumalı ve en soldaki değerleri güvensiz olarak değerlendirmelidir. Sunucu ayrıca internete doğrudan erişilebiliyorsa, listenin hiçbir kısmı güvenilir kabul edilemez.
X-Forwarded-For Ne İçin Kullanılır
Bir proxy veya yük dengeleyici arkasındaki bir sunucu yalnızca o cihazın IP adresini kaydeder. XFF, istemcinin adresini hata ayıklama, istatistikler ve konuma bağlı içerik için geri kazanmasına olanak tanır.
NGINX'te X-Forwarded-For Okuma
NGINX'in realip modülü, istemci adresini X-Forwarded-For gibi bir başlıktan alınan bir adresle değiştirir.
set_real_ip_from: Doğru değerler göndermesi bilinen güvenilir adresleri listeler.real_ip_header X-Forwarded-For;: NGINX'e hangi başlığın okunacağını söyler.real_ip_recursive on;: Güvenilir olmayan başlıktaki son adresi, genel olarak son adrese yerine kullanır.
Modül varsayılan olarak oluşturulmamıştır. --with-http_realip_module yapı seçeneğine ihtiyaç duyar.