PHP, yıllardır "eski" diye eleştirilse de bugün hâlâ internetin büyük bölümünü çalıştırıyor. Fark, dilin kendisinde değil; onu nasıl kullandığınızda. İşte 20 yıllık saha deneyiminden damıtılmış, bir php yazılım uzmanının her projede istisnasız uyguladığı temel prensipler.
1) Veritabanına her zaman PDO ile bağlanın
SQL enjeksiyonu, hâlâ en yaygın güvenlik açıklarından biri. Çözümü şaşırtıcı derecede basit: kullanıcıdan gelen veriyi asla doğrudan sorguya yapıştırmayın; hazır ifadeler (prepared statements) kullanın.
// ❌ Asla böyle yapmayın
$sql = "SELECT * FROM users WHERE email = '" . $_POST['email'] . "'";
// ✅ Doğrusu: hazır ifade + bağlama
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$stmt->execute(['email' => $_POST['email']]);
$user = $stmt->fetch();
PDO ayrıca veritabanı bağımsızlığı sağlar; bugün MySQL kullanıp yarın PostgreSQL'e geçerseniz sorgularınızın büyük kısmı çalışmaya devam eder.
2) Gelen her veriyi doğrulayın, giden her veriyi kaçırın
Altın kural: kullanıcıdan gelen hiçbir veriye güvenmeyin. Form alanları, URL parametreleri, çerezler, hatta HTTP başlıkları — hepsi manipüle edilebilir.
- Doğrulama: Veri beklediğiniz biçimde mi? E-posta gerçekten e-posta mı, yaş sayı mı?
- Temizleme: Gereksiz boşluklar, tehlikeli karakterler ayıklandı mı?
- Kaçış: Ekrana basarken
htmlspecialchars()kullandınız mı? XSS saldırılarının önündeki en basit ve etkili duvar budur.
Güvenlik, kullanıcıya güvenmemekle başlar; ona iyi bir deneyim sunmakla devam eder.
— Yankı Metin Budak
3) Parolaları asla kendiniz şifrelemeyin
MD5, SHA1 ya da "kendi geliştirdiğim algoritma" — hepsi 2026'da kabul edilemez. PHP'nin kendi fonksiyonları bu iş için fazlasıyla yeterli:
// Kayıt sırasında
$hash = password_hash($sifre, PASSWORD_DEFAULT);
// Giriş sırasında
if (password_verify($girilen, $hash)) {
// Giriş başarılı
}
password_hash() tuzlamayı (salt) arka planda sizin yerinize yapar ve PHP sürümü ilerledikçe otomatik olarak daha güçlü algoritmalara geçer.
4) Hataları kullanıcıya değil, log dosyasına gösterin
Canlı sunucuda ekrana düşen bir PHP hatası; saldırgana dosya yollarınızı, veritabanı yapınızı ve kullandığınız kütüphaneleri hediye eder. Üretimde display_errors kapalı, log_errors açık olmalı. Kritik hatalar için kendinize bildirim kurun — müşteriniz haber vermeden siz fark edin.
5) Güvenlik bir alışkanlıktır
Bu maddelerin hiçbiri "ileri seviye" değil; hepsi temel. Ama sahada gördüğüm sorunların büyük bölümü tam da bu temellerin atlanmasından kaynaklanıyor. Güvenli kod yazmak ekstra zaman almaz — doğru alışkanlıklar gerektirir. Projenizde bu prensiplerin uygulandığından emin olmak istiyorsanız bana yazın; mevcut sitenizi birlikte gözden geçirelim.