İçeriğe atla
FerdiGidenby FerdiSoftBETA v2.4
Güvenlik

Rate Limiting ile Brute-Force Saldırılarını Durdurma

Güvenlik üzerinde çalışırken Rate Limiting ile Brute Force Saldırılarını Durdurma konusunu doğru kavramak hem zaman kazandırır hem de ileride çıkabilecek sorunların önüne geçer. Aşağıda konunun özünü 5 başlık altında topladık.

Ferdi GidenFerdi Giden 2 dk okuma 11
Rate Limiting ile Brute-Force Saldırılarını Durdurma
İçindekiler
  1. Temel kavram ve amaç
  2. Bilmeniz gereken 5 temel nokta
  3. PHP ile uygulama
  4. Size ne kazandırır?
  5. Özetle

Güvenlik üzerinde çalışırken Rate Limiting ile Brute-Force Saldırılarını Durdurma konusunu doğru kavramak hem zaman kazandırır hem de ileride çıkabilecek sorunların önüne geçer. Aşağıda konunun özünü 5 başlık altında topladık.

Temel kavram ve amaç

Giriş, şifre sıfırlama ve SMS/WhatsApp doğrulama sayfaları otomatik denemelerin ilk hedefidir. Hız sınırlaması (rate limiting), aynı IP ya da hesaptan belirli sürede yapılabilecek deneme sayısını kısıtlar. Doğru kurulduğunda gerçek kullanıcıyı rahatsız etmeden saldırıyı anlamsız kılar.

Bilmeniz gereken 5 temel nokta

  • İki anahtar: Hem IP hem kullanıcı adı bazında sınırlayın; dağıtık saldırılar farklı IP'ler kullanır.
  • 429 durum kodu: Sınır aşıldığında 429 Too Many Requests ve Retry-After başlığı döndürün.
  • Artan bekleme: Her başarısız denemede bekleme süresini artırmak otomatik denemeyi çok yavaşlatır.
  • Gerçek IP: Cloudflare ya da vekil sunucu arkasındaysanız istemci IP'sini güvenilir başlıktan alın.
  • Katmanlı savunma: Uygulama içi sınırlamayı WAF kuralı ve CAPTCHA ile birlikte kullanın.

PHP ile uygulama

Teoriyi somutlaştırmak için kısa bir PHP örneğine bakalım:

function hizSiniri(PDO $pdo, string $anahtar, int $sinir, int $saniye): bool
{
    $pdo->prepare('DELETE FROM hiz_kayitlari WHERE zaman < NOW() - INTERVAL ? SECOND')->execute([$saniye]);
    $say = $pdo->prepare('SELECT COUNT(*) FROM hiz_kayitlari WHERE anahtar = ?');
    $say->execute([$anahtar]);
    if ((int)$say->fetchColumn() >= $sinir) return false;
    $pdo->prepare('INSERT INTO hiz_kayitlari (anahtar) VALUES (?)')->execute([$anahtar]);
    return true;
}

// 15 dakikada en fazla 5 giriş denemesi (IP + kullanıcı adı)
if (!hizSiniri($pdo, 'giris:' . $ip . ':' . strtolower($kullanici), 5, 900)) {
    http_response_code(429);
    exit('Çok fazla deneme. 15 dakika sonra tekrar deneyin.');
}

Örnek bilinçli olarak kısa tutuldu; gerçek projede hata yönetimi ve günlükleme gibi katmanlar eklenmelidir.

Kullanıcıdan gelen veriyi ekrana basarken htmlspecialchars() ile kaçışlamak XSS saldırılarının önüne geçer.

Size ne kazandırır?

Kısaca özetlemek gerekirse:

  • Saldırı yüzeyini daraltır ve olası veri sızıntılarının önüne geçer
  • Güvenlik denetimlerinden daha kolay geçen bir kod tabanı sağlar
  • Hataların canlı ortama çıkmadan fark edilmesine yardım eder
  • Kullanıcı güvenini ve marka itibarını korur

Özetle

Bu yazı boyunca Rate Limiting ile Brute-Force Saldırılarını Durdurma konusunun temel taşlarını ve uygulamada dikkat edilmesi gerekenleri gördük. Özellikle İki anahtar ve Katmanlı savunma başlıklarını uygulamaya geçirmek iyi bir başlangıç olur.

İlgili içerikler:

Daha fazla uygulamalı içerik için Akademi derslerine ve blog yazılarına göz atabilirsiniz.

Paylaş:
Ferdi Giden

Yazar

Ferdi Giden @admin
Sistem YöneticisiDoğrulanmış GeliştiriciBeta KullanıcıFerdiSoft KatılımcısıDoğrulanmış ProfilGüvenlik Bilinci

PHP, MySQL ve Tailwind ile kurumsal yazılımlar geliştiriyor; FerdiSoft çatısı altında ERP, WMS ve SaaS çözümleri üretiyor.

Yorumlar 0

Yorum yapmak ve tartışmaya katılmak için giriş yapın. Rozetleriniz yorumlarınızda görünür.

Henüz yorum yok. İlk yorumu siz yazın!

Ücretsiz Teklif Al