Web Uygulaması Güvenliği: En İyi Uygulamalar
Web uygulamalarınızı siber tehditlere karşı korumak için uygulamanız gereken temel güvenlik önlemleri ve en iyi uygulamalar.
Web uygulamalarına yönelik siber saldırılar her geçen gün artmaktadır. Güvenli kod yazımı, veritabanı koruması ve kullanıcı verilerinin güvenliği, modern web geliştirmenin vazgeçilmez unsurlarıdır. Bu rehberde, web uygulamalarınızı güvenli hale getirmek için uygulamanız gereken temel stratejileri ve teknik detayları ele alacağız.
Web Güvenliğinin Temel Prensipleri
Güvenli web uygulaması geliştirme, sadece sonradan eklenen özellikler değil, geliştirme sürecinin her aşamasında göz önünde bulundurulması gereken temel bir yaklaşımdır.
"Güvenlik bir özellik değil, bir süreçtir. En güçlü şifreleme bile kötü yazılmış kodla işe yaramaz."
— OWASP Security Expert
CIA Üçlüsü: Güvenliğin Temelleri
- Confidentiality (Gizlilik): Verilerin yetkisiz erişime karşı korunması
- Integrity (Bütünlük): Verilerin değiştirilmemesi ve doğruluğu
- Availability (Erişilebilirlik): Sistemin sürekli erişilebilir olması
OWASP Top 10 Güvenlik Açıkları (2023)
OWASP (Open Web Application Security Project), web uygulamalarında en yaygın güvenlik açıklarını listeler. 2023 güncel listesi:
Kritik Açıklar
- 1. Injection (SQL, NoSQL, LDAP)
- 2. Broken Authentication
- 3. Sensitive Data Exposure
- 4. XML External Entities (XXE)
- 5. Broken Access Control
Diğer Önemli Açıklar
- 6. Security Misconfiguration
- 7. Cross-Site Scripting (XSS)
- 8. Insecure Deserialization
- 9. Using Known Vulnerable Components
- 10. Insufficient Logging & Monitoring
SQL Injection Saldırılarını Önleme
SQL Injection, web uygulamalarında en yaygın ve tehlikeli güvenlik açıklarından biridir. Veritabanı sorgularının güvenli şekilde yazılması kritik önemdedir.
Güvenli Kod Örnekleri
❌ Güvensiz Kod (PHP)
// GÜVENSİZ - SQL Injection açığı var
$query = "SELECT * FROM users WHERE email = '$email' AND password = '$password'";
$result = mysqli_query($connection, $query);
✅ Güvenli Kod (PHP - Prepared Statements)
// GÜVENLİ - Prepared statement kullanımı
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ? AND password = ?");
$stmt->execute([$email, password_hash($password, PASSWORD_DEFAULT)]);
Korunma Yöntemleri
- Prepared Statements: Parametreli sorgular kullanın
- Input Validation: Girdi doğrulama ve sanitizasyon
- Least Privilege: Minimum veritabanı yetkileri
- Error Handling: Detaylı hata mesajlarını gizleyin
Cross-Site Scripting (XSS) Koruması
XSS saldırıları, kötü niyetli JavaScript kodunun web sayfalarına enjekte edilmesiyle gerçekleşir. Üç ana türü vardır:
Stored XSS (Kalıcı)
Kötü niyetli kod veritabanında saklanır ve her sayfa yüklendiğinde çalışır. Örnek: Forum mesajları, yorumlar, kullanıcı profilleri
Reflected XSS (Yansıtılan)
Kötü niyetli kod URL parametresi olarak gönderilir ve hemen yansıtılır. Örnek: Arama sonuçları, hata mesajları
DOM-based XSS
Kötü niyetli kod JavaScript aracılığıyla DOM'u manipüle eder. Örnek: Client-side routing, dinamik içerik
XSS Korunma Stratejileri
Uygulama Katmanında Koruma
Input Sanitization
- • HTML entities encoding
- • JavaScript escape characters
- • URL encoding
- • CSS escape sequences
Output Encoding
- • Context-aware encoding
- • Template engine kullanımı
- • Content Security Policy (CSP)
- • Secure HTTP headers
Kimlik Doğrulama ve Yetkilendirme
Güçlü kimlik doğrulama sistemi, web uygulaması güvenliğinin temelidir. Modern güvenlik standartlarına uygun çözümler uygulanmalıdır.
Güvenli Şifre Yönetimi
Şifre Güvenlik Kuralları
Multi-Factor Authentication (MFA)
Çok faktörlü kimlik doğrulama, güvenliği önemli ölçüde artırır:
Something You Know
Şifre, PIN, güvenlik soruları
Something You Have
Telefon, token, smart card
Something You Are
Parmak izi, yüz tanıma, iris
Güvenli HTTP Headers
Web uygulaması güvenliğini artırmak için kullanılması gereken HTTP başlıkları:
Güvenlik Headers
// Content Security Policy
header("Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline'");
// XSS Koruması
header("X-XSS-Protection: 1; mode=block");
// Content Type Sniffing Koruması
header("X-Content-Type-Options: nosniff");
// Clickjacking Koruması
header("X-Frame-Options: DENY");
// HSTS (HTTPS Zorunluluğu)
header("Strict-Transport-Security: max-age=31536000; includeSubDomains");
// Referrer Policy
header("Referrer-Policy: strict-origin-when-cross-origin");
API Güvenliği
Modern web uygulamalarında API güvenliği kritik önem taşır:
API Authentication & Authorization
- JWT Tokens: Stateless authentication
- OAuth 2.0: Üçüncü parti entegrasyonlar
- API Keys: Basit servis erişimi
- Rate Limiting: DoS saldırılarına karşı koruma
Sonuç ve Öneriler
Web uygulaması güvenliği, sürekli dikkat gerektiren bir alandır. Güvenlik açıkları sürekli geliştiği için, güncel kalmanız önemlidir.
🔐 Güvenlik Kontrol Listesi
- • Tüm girdi alanlarını doğrulayın ve temizleyin
- • Prepared statements kullanın
- • Güçlü şifre politikaları uygulayın
- • HTTPS kullanın
- • Güvenlik headerlarını ekleyin
- • Düzenli güvenlik testleri yapın
- • Güncel kütüphaneler kullanın
Etiketler
İlgili Makaleler
Yerli Yazılım Neden Bu Kadar Önemli?
Dijital dünyanın hızla geliştiği günümüzde, yerli yazılım çözümlerinin önemi her geçen gün artıyor. Pek...
Bulut Teknolojileri ile İş Süreçlerinde Dijital Dönüşüm
Bulut teknolojileri, işletmelerin dijital dönüşüm yolculuğunda en önemli araçlardan biri haline geldi. Bu süre�...