Web Uygulama Güvenliği: OWASP Top 10 ve Korunma Yöntemleri

z

zafer ak

Yazar

07 December 2025 2 dakika okuma 2 görüntülenme
Web Uygulama Güvenliği: OWASP Top 10 ve Korunma Yöntemleri
Web uygulamalarında en yaygın güvenlik açıkları ve korunma yöntemleri. SQL Injection, XSS, CSRF ve daha fazlası.

OWASP Top 10 - 2024

OWASP (Open Web Application Security Project) her yıl en kritik web güvenlik risklerini listeler.

1. Broken Access Control

Yetkisiz erişim, en yaygın güvenlik açığı.

Örnekler

  • URL manipulation: /user/123 → /user/456
  • Role bypass
  • IDOR (Insecure Direct Object Reference)

Korunma

// Laravel Policy kullanımı
public function view(User $user, Post $post)
{
    return $user->id === $post->user_id;
}

// Controller'da
$this->authorize('view', $post);

2. SQL Injection

Veritabanı sorgularına zararlı kod enjekte etme.

Zaafiyetli Kod

// YANLIŞ!
$user = DB::select("SELECT * FROM users WHERE id = $id");

Güvenli Kod

// DOĞRU - Prepared statements
$user = DB::select("SELECT * FROM users WHERE id = ?", [$id]);

// Eloquent ORM kullan
$user = User::find($id);

3. Cross-Site Scripting (XSS)

Zararlı JavaScript kodunun çalıştırılması.

Korunma

// Blade otomatik escape eder
{{ $userInput }}

// Raw HTML gerekiyorsa dikkatli olun
{!! clean($userInput) !!}

// CSP Header
Content-Security-Policy: script-src 'self'

4. CSRF (Cross-Site Request Forgery)

Kullanıcı adına yetkisiz işlem yapma.

Korunma

// Laravel CSRF token
@csrf ...
// SPA için axios.defaults.headers.common['X-CSRF-TOKEN'] = document.querySelector('meta[name="csrf-token"]').content;

5. Security Misconfiguration

  • Debug mode production'da açık
  • Default credentials
  • Gereksiz servisler aktif
  • Missing security headers

Güvenlik Headers

// Laravel middleware
return $response
    ->header('X-Frame-Options', 'DENY')
    ->header('X-Content-Type-Options', 'nosniff')
    ->header('X-XSS-Protection', '1; mode=block')
    ->header('Strict-Transport-Security', 'max-age=31536000');

6. Injection Attacks

SQL dışında: LDAP, OS Command, XML injection.

// Command injection - YANLIŞ
exec("convert " . $filename);

// DOĞRU - Escapeshellarg
exec("convert " . escapeshellarg($filename));

7. Authentication Failures

  • Zayıf şifre politikası
  • Brute force koruması yok
  • Session fixation

Korunma

// Laravel rate limiting
RateLimiter::for('login', function (Request $request) {
    return Limit::perMinute(5)->by($request->ip());
});

// Strong password
Password::min(8)
    ->mixedCase()
    ->numbers()
    ->symbols();

8. Sensitive Data Exposure

  • HTTPS kullanın
  • Hassas verileri şifreleyin
  • PCI DSS uyumu (kredi kartı)

Güvenlik Checklist

✅ HTTPS zorunlu
✅ Prepared statements
✅ Input validation
✅ Output encoding
✅ CSRF tokens
✅ Security headers
✅ Rate limiting
✅ Strong authentication
✅ Audit logging
✅ Regular updates

Sonuç

Güvenlik, sonradan eklenen bir özellik değil, tasarımın temel parçası olmalıdır. Defense in depth yaklaşımıyla çok katmanlı koruma sağlayın.

İlgili Yazılar