Web Güvenliği Neden Kritik?
OWASP'a göre dünyada her gün 30.000'den fazla web sitesi hackleniyor. Türkiye'deki KOBİ'lerin büyük çoğunluğunun web sitesi temel güvenlik önlemlerinden yoksun. Bir saldırı; müşteri verisi sızıntısı, SEO zararı ve itibar kaybı anlamına gelir.
1. Prepared Statements ile SQL Injection'ı Önleyin
Kullanıcı girdisini doğrudan SQL sorgusuna eklemek ölümcüldür:
$pdo->prepare("SELECT * FROM users WHERE email=?")->execute([$email]);
2. Tüm Çıktıları htmlspecialchars() ile Filtreleyin (XSS)
Kullanıcıdan gelen verinin ekranda gösterilmeden önce encode edilmesi zorunludur. ENT_QUOTES ve UTF-8 parametrelerini kullanın.
3. CSRF Token Kullanın
Her formda csrf_token hidden alanı ekleyin ve hash_equals() ile doğrulayın.
4. Parola Hashleme
password_hash($pass, PASSWORD_BCRYPT, ["cost"=>12]) ve doğrulama için password_verify() kullanın. MD5 veya SHA1 asla kullanmayın.
5. HTTPS Zorunluluğu
Tüm trafiği HTTPS'e yönlendirin. Let's Encrypt ile ücretsiz SSL alabilirsiniz. Cookie'lerde Secure ve HttpOnly flag'lerini etkinleştirin.
6. Dosya Yükleme Güvenliği
Yüklenen dosyanın MIME tipini sunucu tarafında doğrulayın. Dosyayı web root dışına kaydedin. Rastgele dosya adı kullanın.
7. Session Güvenliği
Giriş sonrası session_regenerate_id(true) çağırın. Session süresini sınırlayın. Session verilerini şifreleyin.
8. Rate Limiting
Login, şifre sıfırlama ve API endpoint'lerinde dakika başı istek sayısını sınırlayın. Brute force saldırılarına karşı temel koruma.
9. Hata Mesajlarını Sakın
Production ortamında display_errors = Off ayarlayın. Hataları log dosyasına yazın, ekranda göstermeyin — saldırgana bilgi vermeyin.
10. Dependency Güncelleme
Kullandığınız kütüphanelerin bilinen güvenlik açıklarını takip edin. composer audit komutu ile zafiyet taraması yapın.