COMPUTER ENGINEER

Örneklere git
Blog
Next.js / ASP.NET Core / SQL6 dk çalışma
13/ 41

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.

AnlaÖrneği inceleKendin uygula

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.

NERESİNDE KULLANIRSIN?

Hız sınırı, denetim kayıtları ve güvenli çerezler doğru istemci bilgisine dayanır.

SIK YAPILAN HATA

ForwardedHeaders’ı KnownProxies listesini temizleyip her kaynağa açmak.

01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

Temsili örnek
X-Forwarded-For: 198.51.100.24, 10.0.0.5
# soldan sağa: istemci, sonra arada geçtiği vekiller

Baş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.

02 / SIRA SENDE

Ö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
Açıklamalı çözüm
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.