Ağ geçidi
İletilen başlıklar ve güvenilen vekil
X-Forwarded-For’a körü körüne güvenmek, hız sınırını ve log’ları sahte IP’lerle doldurur.
Kavramı anlayalım
Vekil arkasındaki uygulama TCP bağlantısını vekilden alır; bu yüzden HttpContext.Connection.RemoteIpAddress vekilin IP’sini gösterir. İstemcinin gerçek adresi X-Forwarded-For, kullandığı şema X-Forwarded-Proto başlığıyla taşınır. ASP.NET Core’da ForwardedHeaders middleware’i bu başlıkları okuyup bağlantı bilgisini düzeltir.
Sorun şudur: bu başlıkları istemci de gönderebilir. Uygulama her gelen X-Forwarded-For değerine güvenirse saldırgan her istekte farklı bir sahte IP yazarak IP tabanlı hız sınırını atlatır veya log’ları zehirler. Bu yüzden başlıklar yalnız bilinen ve güvenilen vekillerden gelirse dikkate alınmalıdır (KnownProxies veya KnownNetworks).
Şema bilgisi de önemlidir. TLS vekilde sonlandığı için uygulama isteği http olarak görür; yönlendirme adresleri, çerezin Secure niteliği ve OAuth geri dönüş adresleri yanlış üretilebilir. X-Forwarded-Proto doğru okunduğunda uygulama isteğin aslında https olduğunu bilir.
Hız sınırı, denetim kayıtları ve güvenli çerezler doğru istemci bilgisine dayanır.
ForwardedHeaders’ı KnownProxies listesini temizleyip her kaynağa açmak.
Aynı konu. Üç farklı derinlik.
X-Forwarded-For: 198.51.100.24, 10.0.0.5
# soldan sağa: istemci, sonra arada geçtiği vekillerBaşlık bir zincirdir; her vekil kendinden önceki adresi ekler.
Bu sayfa gerçek bir sunucuya veya veritabanına bağlanmaz. Kod örnekleri .NET 8, Next.js ve SQL Server için temsilîdir; süreler simülasyondaki örnek değerlerdir, ölçüm değildir. Örnekleri yalnız kendi geliştirme ortamında dene; gerçek bağlantı dizesi, token veya parola paylaşma.
Önce kendin dene.
Giriş uç noktası IP başına dakikada 5 deneme ile sınırlı, ama log’larda bir saldırganın 2000 farklı IP’den geldiği görülüyor ve hepsi aynı anda. En olası açıklama nedir?
Çözümü ve açıklamasını göster
Uygulama istemcinin gönderdiği X-Forwarded-For’a güveniyor.
Saldırgan her istekte rastgele IP yazıyor.
Çözüm: KnownProxies/KnownNetworks ile yalnız gerçek vekile güvenmek.Gerçekten 2000 makine olabilir, ama aynı imzalı ve eşzamanlı istekler çoğunlukla sahte başlık demektir; önce güven sınırı kontrol edilir.