OWASP (Open Web Application Security Project) Top 10, web uygulamalarındaki en kritik güvenlik risklerinin listesidir. Bu yazıda her bir riski ve korunma yöntemlerini PHP perspektifinden inceliyoruz.
1. Injection (Enjeksiyon)
SQL, NoSQL veya OS komut enjeksiyonu, kullanıcı girdisinin doğrudan sorguya eklenmesiyle oluşur:
// YANLIŞ
$sql = "SELECT * FROM users WHERE id = " . $_GET['id'];
// DOĞRU - Prepared Statement
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$_GET['id']]);2. Broken Authentication
Zayıf şifre politikaları, oturum yönetimi hataları ve brute-force korumasının eksikliği bu kategoriye girer. Güçlü parola hash'leme kullanın:
$hash = password_hash($password, PASSWORD_BCRYPT);
password_verify($input, $hash);3. Cross-Site Scripting (XSS)
Kullanıcı girdisinin sayfaya doğrudan eklenmesiyle oluşur:
// YANLIŞ
echo $_GET['name'];
// DOĞRU
echo htmlspecialchars($_GET['name'], ENT_QUOTES, 'UTF-8');4. CSRF (Cross-Site Request Forgery)
Kullanıcının haberi olmadan onun adına istek gönderilmesidir. Token tabanlı koruma kullanın:
// Token oluştur
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
// Doğrula
if (!hash_equals($_SESSION['csrf_token'], $_POST['token'])) {
die('CSRF token geçersiz');
}Sonuç
Web güvenliği sürekli bir süreçtir. OWASP Top 10 listesini rehber alarak uygulamalarınızı düzenli olarak denetleyin, bağımlılıklarınızı güncel tutun ve güvenlik testleri uygulayın.
