Güvenlik 6 dk okuma BulutWork Ekibi

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. 1. Injection (SQL, NoSQL, LDAP)
  2. 2. Broken Authentication
  3. 3. Sensitive Data Exposure
  4. 4. XML External Entities (XXE)
  5. 5. Broken Access Control

Diğer Önemli Açıklar

  1. 6. Security Misconfiguration
  2. 7. Cross-Site Scripting (XSS)
  3. 8. Insecure Deserialization
  4. 9. Using Known Vulnerable Components
  5. 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ı

1
Güçlü Hash Algoritması: bcrypt, scrypt, Argon2 kullanın
password_hash($password, PASSWORD_ARGON2ID)
2
Salt Kullanımı: Her şifre için benzersiz salt oluşturun
3
Şifre Politikası: Minimum 12 karakter, karışık karakterler

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

#web güvenliği #OWASP #SQL injection #XSS #güvenli kodlama

Makaleyi Paylaş

BW

BulutWork Ekibi

BulutWork ekibi, teknoloji alanında uzman kadrosu ile yerli yazılım çözümleri geliştirmekte ve sektörel deneyimlerini paylaşmaktadır.

İlgili Makaleler