Sitemize saldırı yapılıyor yardımcı olur musunuz
10
●556
- 17-02-2025, 09:29:13recaptcha kayıt ekranında mevcut mu? değil ise recaptcha eklemenizi öneririm.
- 17-02-2025, 09:29:43Saldırıdan sonra ekledim ama nafile halen devam ediyorErtanDogan adlı üyeden alıntı: mesajı görüntüle
- 17-02-2025, 09:32:50
PHP Rate Limiting ve HoneyPot Koruması
session_start(); $ip = $_SERVER['REMOTE_ADDR']; $time = time(); $limit = 5; // 60 saniyede en fazla 5 kayıt denemesi $blockTime = 900; // 15 dakika ban süresi // Oturumda kayıtlı deneme sayısını kontrol et if (!isset($_SESSION['register_attempts'])) { $_SESSION['register_attempts'] = []; } // Eski girişleri temizle $_SESSION['register_attempts'] = array_filter($_SESSION['register_attempts'], function ($attempt) use ($time) { return $attempt > ($time - 60); }); // Eğer limit aşılırsa IP'yi engelle if (count($_SESSION['register_attempts']) >= $limit) { file_put_contents('blocked_ips.txt', "$ip|" . ($time + $blockTime) . "\n", FILE_APPEND); die("Çok fazla kayıt denemesi yapıldı. Lütfen daha sonra tekrar deneyin."); } // Engellenen IP'leri kontrol et $blocked_ips = file('blocked_ips.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); foreach ($blocked_ips as $blocked) { list($blocked_ip, $unblock_time) = explode('|', $blocked); if ($blocked_ip == $ip) { if ($time < $unblock_time) { die("Bu IP geçici olarak engellendi. Lütfen bekleyin."); } } } // HoneyPot (Gizli Tuzak Alanı) Kullanımı if (!empty($_POST['honeypot'])) { die("Bot tespit edildi!"); } // Yeni denemeyi kaydet $_SESSION['register_attempts'][] = $time; // Kullanıcının kayıt işlemi burada devam edebilir... echo "Kayıt başarılı!";
Nasıl Çalışır?
- Rate Limiting (Hız Sınırlama):
- 60 saniyede 5ten fazla kayıt denemesi yapan IP'yi 15 dakika boyunca engeller.
- Engellenen IPleri blocked_ips.txt dosyasına yazar.
- HoneyPot (Bot Tuzak Alanı):
- Formda görünmez bir alan (honeypot) eklenir. Eğer bir bot bu alanı doldurursa, otomatik olarak engellenir.
- HTML Formuna HoneyPot Alanı Ekleyin:
<form action="register.php" method="post"> <input type="text" name="username" placeholder="Kullanıcı Adı" required> <input type="password" name="password" placeholder="Şifre" required> <!-- HoneyPot Alanı (CSS ile Gizlenir) --> <input type="text" name="honeypot" style="display:none;"> <button type="submit">Kayıt Ol</button> </form>
- Rate Limiting (Hız Sınırlama):
- 17-02-2025, 09:34:59
