Özet
- X-Forwarded-For başlığından "Gerçek İstemci IP" alınırken en sağdaki IP kullanılmalı
- XFF başlığındaki en soldaki IP genelde "istemciye en yakın" ve "neredeyse gerçek" kabul edilir, ancak sahte olabilir (spoofable). Güvenlikle ilgili hiçbir şey için kullanılmamalı
- En sağdaki XFF IP'si seçilirken, bu başlığın son örneği kullanılmalı
- Ters proxy'nin ayarladığı "True Client IP" değerleri (
X-Real-IP, True-Client-IP vb.) de faydalı olabilir, ancak
- ters proxy'nin bu değeri nasıl belirlediğine bağlıdır
- ters proxy'nin kendisi zaten kandırılmış olabilir (spoofed)
- ters proxy'nin yapılandırmasının nasıl olduğuna bağlıdır
- Ters proxy tarafından özellikle ayarlanmayan başlıklara güvenilemez
- Örneğin Nginx arkasında değilse veya başlığı her zaman ayarlayacak şekilde yapılandırılmadıysa
X-Real-IP başlığı okunmamalı. Çünkü sahte bir değer okunabilir
- Birçok rate limiter uygulaması sahteciliğe açık IP'ler kullanıyor ve rate limiting aşma ile bellek tüketme saldırılarına karşı savunmasız
- Kodda veya altyapıda "real client ip" ile ilgili bir şey kullanıyorsanız, aşağıdaki teknik ayrıntılara bakın
Ayrıntılar (uzun olduğu için yalnızca başlıklar çevrildi)
- Giriş: bugünlerde "real client ip" tespit etmek korkunç
- Tuzaklar
- Başlıklara güvenilemez
- Birden fazla başlık
- Özel IP
- IP bölme
- Şifrelenmemiş veriye asla güvenilemez
X-Client-IP, True-Client-IP gibi başlıklar sahte olabilir
X-Forwarded-For'u anlamak
- Tuzaklardan kaçınma
- Gerçek IP'yi bulma algoritması
- Tüm IP değerlerini al
- Güvenlik durumuna göre hangisinin kullanılacağını seç
- En soldaki, en sağdaki
- Pratik örnekler
- Cloudflare, Nginx, Apache
- Akamai
- Fastly
- Azure
- go-chi/chi
- didip/tollbooth
- ulule/limiter
- sethvargo/go-limiter
- Let's Encrypt
- Express
- Traefik
- phpList
- IIS
- Tor
- İleri seviye: teorik tuzaklar ve saldırı yöntemleri
- RFC 7239: Forwarded HTTP Extension, June 2014
3 yorum
Bu kısımda hafif bir çeviri hatası var gibi görünüyor. Orijinal metin şöyle.
Örneğin, Nginx arkasında değilseniz veya her zaman onu ayarlayan başka bir şeyin arkasında değilseniz
X-Real-IPbaşlığını kontrol etmemelisiniz. Çünkü sahte bir değer okuyor olursunuz.Ah, düzelteceğim. Teşekkürler!
Genel yöntemde,
TRUSTED_PROXYortam değişkeni kullanılarak en sağdan başlayıp "güvenilir" proxy’ler teker teker elenir ve ilk karşılaşılan IP kullanılır.Genelde dahili IP’ler (
192.168.0.0/16gibi) de güvenilir proxy olarak kabul edilir.