Web uygulamaları, kötü niyetli saldırılara karşı korunmadığında DDoS (Distributed Denial of Service) ve Brute Force saldırıları gibi risklere açık hale gelir. PHP ile DDoS saldırılarından korunmak için rate limiting, reCAPTCHA ve Cloudflare gibi yöntemler kullanılmalıdır. Brute Force saldırılarına karşı şifre politikaları, başarısız giriş denetimi ve IP bloklama mekanizmaları uygulanmalıdır. Bu güvenlik önlemleri sayesinde web uygulamalarınızı kötü niyetli saldırılara karşı koruyabilirsiniz.
1. DDoS ve Brute Force Saldırıları Nedir?
1.1. DDoS (Distributed Denial of Service) Saldırısı
DDoS saldırıları, çok sayıda sahte istek göndererek sunucunun kaynaklarını tüketmeyi ve hizmetleri çökertmeyi amaçlar.
Amaç:
✅ Sunucunun çökmesini sağlamak.
✅ Kullanıcıların hizmete erişmesini engellemek.
✅ Bant genişliğini aşırı tüketerek yavaşlamaya neden olmak.
1.2. Brute Force Saldırısı
Brute Force saldırıları, bir kullanıcının şifresini tahmin etmek için otomatik deneme-yanılma yöntemini kullanır.
Amaç:
✅ Kullanıcı hesaplarına yetkisiz erişim sağlamak.
✅ Yönetici paneline giriş yapmak.
✅ API anahtarlarını ele geçirmek.
2. PHP ile DDoS Saldırılarından Korunma
DDoS saldırılarına karşı önlem almak için aşağıdaki güvenlik mekanizmaları uygulanmalıdır.
2.1. IP Tabanlı Rate Limiting (Hız Sınırlama)
Belirli bir süre içinde bir IP adresinden yapılan istek sayısını sınırlamak, DDoS saldırılarını hafifletir.
session_start();
$ip = $_SERVER['REMOTE_ADDR'];
$time_limit = 60; // 60 saniye içinde maksimum istek
$max_requests = 100;
if (!isset($_SESSION['request_count'][$ip])) {
$_SESSION['request_count'][$ip] = ['count' => 1, 'start_time' => time()];
} else {
$_SESSION['request_count'][$ip]['count']++;
if ($_SESSION['request_count'][$ip]['count'] > $max_requests && (time() - $_SESSION['request_count'][$ip]['start_time']) < $time_limit) {
http_response_code(429);
die(json_encode(["error" => "Çok fazla istek, lütfen daha sonra tekrar deneyin."]));
}
}
Bu yöntem, 1 dakika içinde 100’den fazla istek yapan IP adreslerini engeller.
2.2. ReCAPTCHA Kullanımı
reCAPTCHA, botların ve otomatik saldırıların sitenizi kötüye kullanmasını önler.
<form action="login.php" method="POST">
<div class="g-recaptcha" data-sitekey="your-site-key"></div>
<button type="submit">Giriş Yap</button>
</form>
Sunucu tarafında doğrulama:
$recaptcha_secret = "your-secret-key";
$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=$recaptcha_secret&response=" . $_POST['g-recaptcha-response']);
$result = json_decode($response);
if (!$result->success) {
die("reCAPTCHA doğrulaması başarısız.");
}
Bu yöntem, botların ve otomatik saldırıların giriş yapmasını engeller.
2.3. Cloudflare veya WAF Kullanımı
Cloudflare gibi Web Uygulama Güvenlik Duvarı (WAF) çözümleri, DDoS saldırılarını otomatik olarak filtreler ve engeller.
3. PHP ile Brute Force Saldırılarından Korunma
Brute Force saldırılarına karşı kullanıcı girişlerini korumak için aşağıdaki önlemler alınmalıdır.
3.1. Başarısız Giriş Denemelerini Sınırlama
Belirli bir IP adresinden yapılan başarısız giriş denemelerini takip ederek erişimi engelleyebiliriz.
session_start();
$ip = $_SERVER['REMOTE_ADDR'];
$max_attempts = 5;
$lockout_time = 900; // 15 dakika
if (!isset($_SESSION['login_attempts'][$ip])) {
$_SESSION['login_attempts'][$ip] = ['count' => 0, 'last_attempt' => time()];
}
if ($_SESSION['login_attempts'][$ip]['count'] >= $max_attempts && (time() - $_SESSION['login_attempts'][$ip]['last_attempt']) < $lockout_time) {
die("Çok fazla başarısız giriş denemesi. Lütfen 15 dakika sonra tekrar deneyin.");
}
if (isset($_POST['password'])) {
$password = $_POST['password'];
$stored_password_hash = '$2y$10$hash'; // Örnek şifre hash'i
if (password_verify($password, $stored_password_hash)) {
$_SESSION['login_attempts'][$ip]['count'] = 0; // Başarılı girişte sıfırla
echo "Giriş başarılı";
} else {
$_SESSION['login_attempts'][$ip]['count']++;
$_SESSION['login_attempts'][$ip]['last_attempt'] = time();
die("Yanlış şifre!");
}
}
Bu kod, 5 başarısız giriş denemesinden sonra kullanıcıyı 15 dakika boyunca engeller.
3.2. Kullanıcı Şifrelerini Güçlü Hale Getirme
Zayıf parolalar, brute force saldırılarına karşı savunmasızdır. Kullanıcı şifrelerini şu yöntemlerle güçlendirin:
Şifre Politikası:
if (!preg_match("/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[!@#$%^&*]).{8,}$/", $_POST['password'])) {
die("Şifre en az 8 karakter, bir büyük harf, bir küçük harf, bir rakam ve bir özel karakter içermelidir.");
}
Bu kod, şifrelerin en az 8 karakter uzunluğunda ve karmaşık olmasını sağlar.
4. Güvenlik Testleri
✅ DDoS Testi: Sunucuya yoğun istek göndererek hız sınırlandırmasının çalışıp çalışmadığını test edin.
✅ Brute Force Testi: Aynı hesaba farklı şifrelerle giriş yapmayı deneyerek engellemenin devreye girip girmediğini kontrol edin.
✅ Şifre Politikası Testi: Zayıf şifreleri kabul edip etmediğini test edin.
✅ reCAPTCHA Testi: Botların otomatik giriş yapmaya çalışıp çalışmadığını kontrol edin.
Yorum gönder