PHP ile Brute Force (Kaba Kuvvet) Saldırısına Karşı Önlem Alma
Blog'a Dön

PHP ile Brute Force (Kaba Kuvvet) Saldırısına Karşı Önlem Alma

Buğra Şıkel

PHP Brute Force Engelleme

PHP ile kullanıcılarımızın oturum açmalarını içeren sistemler kuruyoruz. Bu sistemlerde alabileceğimiz saldırılardan en yaygın olanlardan birisi Brute Force yani kaba kuvvet saldırısıdır.

Brute Force saldırısı, bir kullanıcının bir hesabın parolasını tahmin etmek için sistematik olarak bütün olası parola seçeneklerini denemeye dayalı bir saldırı türüdür. Bu saldırılar, genellikle bir hesabın güvenlik doğrulamasını zayıflatmak veya bir sistemi zararlı bir şekilde kullanmak amacıyla gerçekleştirilir.

Bu tür bir saldırıya karşı korunmak için, birkaç farklı yöntem kullanılabilir. Öncelikle, kullanıcıların parolalarını güçlendirmeleri önemlidir. Bu, parolaların karakterlerinin bir kombinasyonunu içermesi anlamına gelir. Parolalar, rakamlar, harfler ve özel karakterleri içermeli ve uzunlukları en az 8 karakter olmalıdır. Ayrıca, kullanıcıların parolalarını sık sık değiştirmeleri de önemlidir, böylece bir hesap ele geçirilirse bile, parola zamanla değişecektir ve saldırıcıların parolayı kıracak zamanı olmayacaktır.

Bir diğer önemli yöntem ise, sınırlı deneme seçeneğini kullanmaktır. Bu, bir kullanıcının bir hesabın parolasını yanlış girdiğinde sistem tarafından yapılan hatalı giriş denemelerini sınırlamak anlamına gelir. Örneğin, bir hesabın parolasını yanlış girdiğinde, sistem birkaç deneme hakkı verilebilir ve daha fazla yanlış giriş denemesi yapılmaya çalışıldığında hesap geçici olarak kilitlenebilir. Bu, saldırıcıların sistematik olarak bir hesabın parolasını denemesi durumunda, saldırının zaman aşımına uğramasını sağlar.

Bu yazımızda biz de sınırlı deneme sistemini kullanmayı göstereceğiz.

Öncelikle login işlemlerinde hatalı girişlerde etkin olacak bir fonksiyon yazıyoruz.

Fonksiyonumuz:

function login_attempt() {
    // Eğer login_attempt session'ı zaten oluşturulmuşsa, değerini 1 artır
    if (isset($_SESSION['login_attempt'])) {
        $_SESSION['login_attempt']++;
    }
    // Eğer login_attempt session'ı henüz oluşturulmamışsa, değerini 1 yap
    else {
        $_SESSION['login_attempt'] = 1;
    }
    // Eğer login_attempt session'ının değeri 3'e ulaştıysa
    if ($_SESSION['login_attempt'] >= 3) {
        $_SESSION['login_failed'] = time();
    }
}

Şimdi gelelim login formumuzun gittiği yer olan php dosyamızın içerisine.

Login.php

// post işlemi geldikten sonraki kodun başlangıç noktasına aşağıdaki kodu ekliyoruz.

if (isset($_SESSION['login_failed'])) {
        $difference = time() - $_SESSION['login_failed'];
        if ($difference < 180){
            $remain = 180-$difference;
            echo 'Çok fazla yanlış deneme yaptınız '.$remain.' saniye sonra tekrar deneyin';
            return;
        }else {
            unset($_SESSION['login_failed']);
            unset($_SESSION['login_attempt']);
        }
    }

// burada normal kullanıcı adı, şifre kontrollerimizi yapıyoruz. 

// eğer kullanıcımız yanlış denemede bulunursa yukarıdaki fonksiyonumuzu çağırıyoruz
login_attempt();

Sonuç olarak 3 yanlış deneme yaptıktan sonra kullanıcının yeni bir şifre denemesini 180 saniye boyunca engellemiş olduk. Engellemek istediğiniz süreyi daha da arttırabilir ya da azaltabilirsiniz. Sizin kullanıcılarınıza yönelik karar vermeniz gereken bir konu. İsterseniz Her 3 yanlış denemeyi de bir session ile tutabilir ve her 3 yanlış denemeden sonra beklenecek süreyi katlayarak çoğaltabilirsiniz.

Bu ve benzeri önemli ipuçlarını öğrenmek için diğer yazılarıma da göz atabilirsiniz.

Web sitesine mi ihtiyacınız var ?

Bunları da beğenebilirsiniz

WebAssembly ile Tarayıcıda Yüksek Performans: Rust ve Go ile Güçlü Entegrasyon ve Uygulamalar
26 Ocak 2026

WebAssembly ile Tarayıcıda Yüksek Performans: Rust ve Go ile Güçlü Entegrasyon ve Uygulamalar

WebAssembly (Wasm) ile web uygulamalarınızda eşsiz bir performans artışı sağlayın. Bu rehberde, Rust ve Go dillerini kullanarak tarayıcıda yüksek performanslı işlemler geliştirmenin yollarını ve gerçek dünya kullanım senaryolarını keşfedin.

Devamını Oku
PHP ile Verileri Şifreleme (Kriptografi) ve Şifre Çözme Fonksiyonları
14 Ekim 2022

PHP ile Verileri Şifreleme (Kriptografi) ve Şifre Çözme Fonksiyonları

Projelerimizde çoğu zaman şifrelemeler oluşturuyoruz. Bu şifrelemelerin çoğunu tek taraflı yapsak da bazı zamanlarda geri açılabilir şifreler kullanmamız gerekebiliyor. Aşağıdaki kod bloğunda php ile şifreleme…

Devamını Oku
Edge Cihazlarda TensorRT ile Gerçek Zamanlı Multimodal Anomali Tespiti
31 Ocak 2026

Edge Cihazlarda TensorRT ile Gerçek Zamanlı Multimodal Anomali Tespiti

Endüstriyel üretim hatlarında kalite kontrol ve arıza tespiti için multimodal anomali tespitinin önemi ve TensorRT ile edge cihazlarda nasıl gerçek zamanlı optimize edildiğini keşfedin.

Devamını Oku
AI Asistan