Her Seyi Baslatan Saldiri

Kasim 2025'te musteri sitelerimizden biri tek bir saat icinde 14.000 giriş denemesi aldi. Saldirgan bir kimlik doldurma listesi kullandi — diger ihlallerden sizan kullanıcı adi/sifre ciftleri — ve /admin/login.php'ye otomatik POST istekleri gonderdi. Site ayakta kaldi cunku PHP her istegi bağımsız olarak isler, ancak veritabanı kimlik doğrulama sorgulariyla darbeler aldi ve yasal kullanıcılar 8 saniyelik yanit sureleri yasadi.

Bu olay bizi rate limiting'i JekCMS cekirdegine insa etmeye yoneltti. Eklenti olarak degil. Opsiyonel bir özellik olarak degil. Her istek yasam dongusunun temel bir parcasi olarak.

Algoritma Secimi: Kayan Pencere

Uc yaygin rate limiting algoritmasi vardir: Sabit Pencere, Token Kovasi ve Kayan Pencere. Kayan pencereyi sectik cunku dosya tabanli depolama ile dogru sekilde uygulamasi en basit olandir ve sinir durumu surprizleri yoktur.

Dosya Tabanli Uygulama

Cogu rate limiting ogretici Redis veya memcached varsayar. Biz yapmiyoruz. JekCMS paylaşımli hosting'de çalışır — PHP ve MySQL alirsiniz, nokta. Rate limiter'imiz dosya sistemini kullanir. Her IP/eylem kombinasyonu kendi dosyasini alir, boylece farkli istemciler arasinda catisma yoktur. LOCK_EX bayragi birden fazla istek ayni anda geldiginde yaris kosullarini onler.

Giris Kisitlamasi

Giris girişimleri basarisizlik sayisina gore giderek daha siki rate limit'ler alir. Cift katmanli yaklasim: IP başına saatte 30 deneme + kullanıcı adi başına 15 dakikada 5 deneme. Saldirgan bir hesapta farkli sifreler denerse 5 denemeden sonra kilitlenir, birden fazla hesapta ayni sifreyi denerse ayni IP'den 30 denemeden sonra kilitlenir.

API Rate Limiting

API endpointleri IP başına degil API anahtari başına ayri bir rate limit yapılandırmasi kullanir: varsayilan 100/saat, upload 20/saat, arama 60/dakika, webhook 200/saat.

Cop Toplama

Rate limit dosyalari birikir. Her istekte %1 olasilikla cop toplama calistiriyoruz: 1 saatten eski dosyalari temizle.

Sonuclar

12 sitenin tamamina rate limiting dagitildiktan sonra: brute force girişimleri gunde ~2.000'den kilitleme oncesi 6'dan az başarılı istege dustu. Saldirilar sirasinda veritabanı yuku %97 dustu. Sifir yasal kullanıcı yanlis sekilde rate-limited edildi.