OWASP Nedir?
OWASP (Open Web Application Security Project - Açık Web Uygulaması Güvenlik Projesi), web uygulama güvenliğini artırmayı hedefleyen kar amacı gütmeyen küresel bir topluluktur. OWASP tarafından yayınlanan 'Top 10' belgesi, web uygulamalarında en sık karşılaşılan ve en yüksek risk taşıyan 10 kritik güvenlik zafiyetini listeler. Güvenli kod yazma pratiklerinin bu standartlar temelinde şekillendirilmesi siber zırhlama için elzemdir.
Kritik Zafiyetler ve Laravel Korumaları
OWASP Top 10 listesinde öne çıkan bazı zafiyetler ve bunlara karşı geliştirme aşamasında alınması gereken önlemler şunlardır:
1. Injection (Enjeksiyon - SQLi, XSS)
Saldırganın girdi alanları üzerinden sunucuya zararlı komutlar göndermesiyle oluşur. SQL Injection engellemek için parametrik sorgular kullanılmalıdır. Laravel Eloquent ORM ve Query Builder, PDO parametre bağlamasını (binding) otomatik uygulayarak SQLi saldırılarını engeller. Ham SQL sorgusu yazılması gerektiğinde mutlaka binding parametreleri (DB::select('SELECT * FROM users WHERE id = ?', [$id])) kullanılmalıdır.
Cross-Site Scripting (XSS) saldırılarını önlemek için kullanıcı girdileri ekrana yazdırılmadan önce escape edilmelidir. Laravel Blade motorundaki çift süslü parantez ({{ $data }}) yapısı, gelen veriyi otomatik olarak HTML entity'lerine dönüştürerek tarayıcının zararlı script'leri çalıştırmasını engeller.
2. Broken Access Control (Kırık Yetkilendirme Kontrolü)
Kullanıcıların kendi yetkileri dışındaki dosyalara veya API uçlarına erişebilmesi durumudur. Laravel Gate ve Policy sınıfları kullanılarak her istek öncesinde kullanıcının o işlemi yapmaya yetkili olup olmadığı denetlenmelidir. Örneğin bir kullanıcının başkasına ait faturayı indirmesini önlemek için controller katmanında yetkilendirme kontrolü ($this->authorize('view', $invoice)) zorunlu tutulmalıdır.
3. Cryptographic Failures (Kriptografik Hatalar)
Hassas verilerin (şifreler, kredi kartı bilgileri) şifrelenmeden saklanması veya zayıf şifreleme algoritmalarının kullanılmasıdır. Şifreler asla düz metin olarak saklanmamalıdır. Laravel, varsayılan olarak bcrypt ve Argon2 şifreleme algoritmalarını destekleyen Hash cephesini (Hash::make($password)) sunar. Veritabanında saklanan kişisel veriler ise Laravel'in yerleşik Crypt facade'i kullanılarak AES-256-CBC standardında şifrelenmelidir.
4. Security Misconfiguration (Hatalı Güvenlik Yapılandırması)
Geliştirme aşamasında açık bırakılan hata ayıklama (debug) modları siber saldırganlar için açık kapıdır. Yayındaki projelerde .env dosyasındaki APP_DEBUG=true ayarı mutlaka false olarak güncellenmelidir. Aksi takdirde sunucu hatalarında tüm veritabanı şifreleri ve API anahtarları ekranda görüntülenecektir.
Konuyla İlgili Sık Sorulanlar
Ağ güvenliği, penetrasyon testleri ve statik kod denetimleri üzerine uzman kadro.