Web Güvenliği Neden Her Zamankinden Daha Kritik?
2026 yılında siber saldırılar hem sayıca hem karmaşıklıkça artmaya devam ediyor. Küçük bir kişisel site bile botlar tarafından sürekli taranıyor. Güvenlik artık "büyük şirketlerin sorunu" değil — her web uygulaması için zorunluluk.
OWASP Top 10: En Yaygın Güvenlik Açıkları
OWASP (Open Web Application Security Project), web uygulamalarındaki en kritik güvenlik risklerini her yıl listeliyor. En sık karşılaşılanlar:
1. Injection Saldırıları (SQL, NoSQL, Command)
Kullanıcıdan gelen veri doğrudan veritabanı sorgularına veya sistem komutlarına eklendiğinde oluşur. Saldırgan, özel karakterler kullanarak sorguyu manipüle edebilir.
Korunma yöntemleri:
- Parametreli sorgular (prepared statements) kullanın — string birleştirme ile sorgu yazmayın
- ORM kullanın (Prisma, Drizzle, TypeORM) — sorguları otomatik olarak escape eder
- Input validation uygulayın — gelen verinin tipini, uzunluğunu ve formatını kontrol edin
- Least privilege prensibi — veritabanı kullanıcısına sadece gerekli yetkileri verin
2. Cross-Site Scripting (XSS)
Saldırganın web sayfasına zararlı JavaScript kodu enjekte etmesidir. Kullanıcının oturum bilgilerini çalabilir, sayfayı değiştirebilir.
Korunma yöntemleri:
- Kullanıcı girdilerini her zaman encode edin — HTML entity encoding
- dangerouslySetInnerHTML kullanmaktan kaçının, kullanmanız gerekiyorsa içeriği mutlaka sanitize edin
- Content Security Policy (CSP) header'ı kullanın — hangi scriptlerin çalışabileceğini kısıtlayın
- HttpOnly cookie flag'i — JavaScript'in cookie'lere erişimini engelleyin
3. Cross-Site Request Forgery (CSRF)
Kullanıcının oturum açtığı bir sitede, onun adına istenmeyen işlemler yaptırmaktır.
Korunma yöntemleri:
- CSRF token kullanın — her form submission'da benzersiz token doğrulayın
- SameSite cookie attribute — cookie'lerin cross-origin isteklere gönderilmesini engelleyin
- Origin ve Referer header kontrolü
Authentication Güvenliği
Kimlik doğrulama, güvenliğin en kritik katmanıdır:
- Şifre saklama: Asla düz metin olarak saklamayın. bcrypt veya Argon2 ile hash'leyin
- JWT güvenliği: Token'ları HttpOnly cookie'de saklayın, localStorage'da değil. Kısa süreli access token + uzun süreli refresh token kullanın
- Brute force koruması: Başarısız giriş denemelerini sınırlayın, CAPTCHA uygulayın
- İki faktörlü doğrulama (2FA): Kritik uygulamalar için TOTP tabanlı 2FA ekleyin
- Session yönetimi: Oturum süresini sınırlayın, inaktivite timeout'u uygulayın
HTTP Güvenlik Header'ları
Doğru yapılandırılmış HTTP header'ları birçok saldırıyı otomatik olarak engeller:
- Strict-Transport-Security (HSTS): Tarayıcıyı HTTPS kullanmaya zorlar
- Content-Security-Policy (CSP): İzin verilen kaynak listesi — XSS saldırılarının büyük bölümünü engeller
- X-Content-Type-Options: nosniff — MIME type sniffing'i engeller
- X-Frame-Options: SAMEORIGIN — Clickjacking saldırılarını önler
- Referrer-Policy: Hangi bilgilerin referer header'ında gönderileceğini kontrol eder
- Permissions-Policy: Kamera, mikrofon, konum gibi tarayıcı özelliklerini kısıtlar
API Güvenliği
API endpoint'leriniz en büyük saldırı yüzeyidir:
- Rate limiting: IP başına istek sayısını sınırlayın — DDoS ve brute force koruması
- Input validation: Her endpoint'e gelen veriyi doğrulayın — Zod veya Yup ile
- Payload boyut limiti: Büyük payload'larla bellek tüketimi saldırılarını önleyin
- CORS yapılandırması: Sadece güvenilir domain'lere izin verin
- API key yönetimi: Anahtarları düzenli olarak rotate edin
Dependency Güvenliği
Kullandığınız paketler de güvenlik açığı kaynağıdır:
- Düzenli olarak npm audit çalıştırın
- Bağımlılıkları güncel tutun — özellikle güvenlik yamaları
- Gereksiz paketleri kaldırın — saldırı yüzeyini küçültün
- Lock dosyasını (package-lock.json) versiyon kontrolünde tutun
Sunucu Güvenliği
Uygulama güvenliği kadar sunucu güvenliği de kritiktir:
- Container'ları root olmayan kullanıcıyla çalıştırın
- Dosya sisteminizi read-only mount edin
- Memory ve CPU limitleri belirleyin — kaynak tüketimi saldırılarını önleyin
- Gereksiz portları kapatın
- Düzenli güvenlik güncellemeleri uygulayın
- Erişim loglarını izleyin — anormal trafik kalıplarını tespit edin
Güvenlik Testi
Güvenliğinizi düzenli olarak test edin:
- SAST (Static Application Security Testing): Kodu derleme zamanında analiz edin
- DAST (Dynamic Application Security Testing): Çalışan uygulamayı dışarıdan test edin
- Penetration testing: Profesyonel güvenlik uzmanlarıyla düzenli sızma testi yaptırın
- Bug bounty: Güvenlik araştırmacılarının açıkları raporlaması için kanal oluşturun
Sonuç
Güvenlik, bir özellik değil, sürekli devam eden bir süreçtir. Kod yazarken güvenliği düşünmek, sonradan eklemeye çalışmaktan çok daha kolay ve ucuzdur. Temel güvenlik önlemlerini baştan alın, düzenli olarak test edin ve güncel kalın.
Projenizin güvenlik altyapısını güçlendirmek mi istiyorsunuz? İletişime geçin ve birlikte çalışalım.
