“Güvenlik bir özellik değildir. Bir disiplindir.” – Laravel Topluluğu
Temel Çıkarımlar
- Derin Savunma: Laravel, birlikte en iyi şekilde çalışan birden fazla yerleşik güvenlik katmanı (CSRF, hashing, validation, ORM koruması) sunar.
- OWASP Uyumlu: Çoğu Laravel güvenlik özelliği, SQL Injection, XSS ve CSRF gibi OWASP Top 10 zafiyetlerini doğrudan azaltır.
- Varsayılan Olarak Güvenli: Laravel’in önerilen varsayılanları (bcrypt/argon hashing, hazırlıklı ifadeler, CSRF middleware) saldırı yüzeylerini önemli ölçüde azaltır.
- Kimlik Doğrulama Güçlendirme: Guard’ların, hız sınırlamanın ve şifre politikalarının uygun kullanımı, brute-force ve credential stuffing saldırılarını engeller.
- Yapılandırma Önemlidir: Birçok güvenlik ihlali, çerçeve hatalarından değil, yanlış yapılandırılmış ortamlar, izinler veya açığa çıkan bilgilerden kaynaklanır.
- Üretim Hazırlığı: Olgun Laravel uygulamaları, güvenliği bir kerelik bir kurulum değil, sürekli bir süreç olarak ele alır.
İçindekiler
- Giriş
- Laravel Güvenlik Mimarasını Anlamak
- Yaygın Zafiyet 1: SQL Injection
- Yaygın Zafiyet 2: Cross-Site Request Forgery (CSRF)
- Yaygın Zafiyet 3: Cross-Site Scripting (XSS)
- Yaygın Zafiyet 4: Kimlik Doğrulama ve Yetkilendirme Hataları
- Yaygın Zafiyet 5: Toplu Atama
- Yaygın Zafiyet 6: Dosya Yükleme ve Depolama Riskleri
- Yaygın Zafiyet 7: Hassas Veri Açıkları
- Hız Sınırlama ve Brute Force Koruması
- Güvenli Yapılandırma ve Dağıtım Pratikleri
- İstatistikler
- İlginç Gerçekler
- SSS
- Sonuç
Giriş
Güvenlik, modern web uygulamalarında isteğe bağlı bir özellik değildir; temek bir gerekliliktir. Laravel uygulamaları kullanıcılar, veriler ve entegrasyonlar arttıkça, ortak zafiyetleri istismar eden saldırganlar için çekici hedefler haline gelir.
Laravel, varsayılan olarak güvenli olmasıyla geniş çapta saygı görmektedir; ancak sadece varsayılanlar yeterli değildir. Geliştiricilerin bu korumaların neden var olduğunu ve nasıl doğru bir şekilde uygulanacağını anlaması gerekmektedir. Bu makale, Laravel güvenlik en iyi uygulamalarını, gerçek dünya zafiyetlerini somut çerçeve özelliklerine eşleştirerek incelemektedir; böylece dayanıklı, uyumlu ve üretim hazır uygulamalar geliştirmenize yardımcı olmaktadır.
“Güvenlik her zaman aşırıya kaçmaktır, ta ki yetersiz olana kadar.” – Robbie Sinclair
Laravel Güvenlik Mimarasını Anlamak
Laravel’ın güvenlik modeli katmanlıdır:
- HTTP Katmanı (Middleware, CSRF, Hız Sınırlama)
- Uygulama Katmanı (Doğrulama, Yetkilendirme, Politika)
- Veri Katmanı (Eloquent ORM, Sorgu Oluşturucu, Şifreleme)
Her katman, önceki katmanın başarısız olabileceğini varsayar; bu durum derin savunmanın özüdür.
Yaygın Zafiyet 1: SQL Injection
Tehdit: Saldırganlar, kullanıcı girdisi aracılığıyla kötü niyetli SQL enjekte eder.
Laravel Çözümü
Laravel’in Sorgu Oluşturucu ve Eloquent ORM’i, doğrudan sorgu enjekte edilmesini ortadan kaldıran hazırlıklı ifadeleri kullanır.
User::where('email', $request->email)->first();
//Tehlikeli (güvenilmeyen girdilerle ham sorgulardan kaçının):
DB::select("SELECT * FROM users WHERE email="$email"");
Fayda: Eloquent doğru kullanıldığında SQL enjeksiyon riskleri neredeyse ortadan kalkar.
Yaygın Zafiyet 2: Cross-Site Request Forgery (CSRF)
Tehdit: Bir saldırgan, kimlik doğrulaması yapılmış bir kullanıcıyı istenmeyen eylemleri gerçekleştirmeye kandırır.
Laravel Çözümü
Laravel, POST, PUT, PATCH ve DELETE rotalarını otomatik olarak CSRF tokenleriyle korur.
Fayda: Geçerli token olmayan istekler iş mantığınıza ulaşmadan geri çevrilir.
Yaygın Zafiyet 3: Cross-Site Scripting (XSS)
Tehdit: Kötü niyetli scriptler web sayfalarına enjekte edilerek kullanıcıların tarayıcılarında çalıştırılır.
Laravel Çözümü
Blade şablonları, varsayılan olarak çıktıyı kaçırır.
{{ $user->name }}
{!! $html !!}
En İyi Uygulama: {!! !!} kullanmayın, içeriğin tamamen güvenilir veya temiz olduğundan emin olmadıkça.
Yaygın Zafiyet 4: Kimlik Doğrulama ve Yetkilendirme Hataları
Tehdit: Korunan kaynaklara yetkisiz erişim.
Laravel Çözümü
- Guard’lar aracılığıyla kimlik doğrulama (session, token, Sanctum, Passport)
- Gates ve Policies aracılığıyla yetkilendirme
$this->authorize('update', $post);
Fayda: Yetkilendirme mantığı merkezi bir şekilde yönetilir ve kontrolcüler boyunca tutarlı bir şekilde uygulanır.
Yaygın Zafiyet 5: Toplu Atama
Tehdit: Saldırganlar, istek yükleri aracılığıyla korunan model özelliklerini değiştirir.
Laravel Çözümü
Explicitly define $fillable or $guarded.
class User extends Model {
protected $fillable = ['name', 'email'];
}
Fayda: Kullanıcıların is_admin gibi hassas alanları değiştirmesini engeller.
Yaygın Zafiyet 6: Dosya Yükleme ve Depolama Riskleri
Tehdit: Kötü niyetli scriptler veya yürütülebilir dosyaların yüklenmesi.
En İyi Uygulamalar
- Dosya türlerini ve boyutunu doğrulayın
- Yüklemeleri halka açık dizin dışında saklayın
$request->validate([
'file' => 'required|mimes:jpg,png,pdf|max:2048'
]);
Fayda: Uzaktan kod yürütme ve depolama suistimalini önler.
Yaygın Zafiyet 7: Hassas Veri Açıkları
Tehdit: Parolaların, API anahtarlarının veya kişisel verilerin sızdırılması.
Laravel Çözümü
- bcrypt() veya Argon2 kullanarak güvenli hashing
- Şifrelenmiş ortam değişkenleri
Hash::make($request->password);
Asla:
- .env dosyalarını kaydetmeyin
- Hassas verileri kaydetmeyin
Hız Sınırlama ve Brute Force Koruması
Laravel, yerleşik hız sınırlama middleware’ı sunar.
Route::middleware('throttle:5,1')->group(function () {
Route::post('/login', 'AuthController@login');
});
Fayda: Brute-force giriş denemelerine ve API suistimaline karşı korur.
Güvenli Yapılandırma ve Dağıtım Pratikleri
- Üretimde APP_DEBUG’u devre dışı bırakın
- Doğru dosya izinlerini kullanın
- Gizli anahtarları düzenli olarak yenileyin
- Laravel ve bağımlılıkları güncel tutun
“Güvenlik açıkları, sıklıkla bir kostüm giymiş yapılandırma hatalarıdır.” – Belirsiz
İstatistikler
- Web uygulama ihlallerinin %60’ından fazlası yanlış yapılandırma veya yanlış erişim kontrolü ile ilişkilendirilmiştir. (Kaynak)
- Hazırlıklı ifadeler kullanan uygulamalar, SQL enfeksiyon olaylarını %90’dan fazla azaltır. (Kaynak)
- Hız sınırlama, brute-force saldırı başarı oranlarını %70’e kadar azaltabilir.
- OWASP Top 10, gerçek dünya Laravel istismar girişimlerinin çoğunluğunu oluşturur.
İlginç Gerçekler
- Blade’in otomatik kaçış özelliği, Laravel’in en göz ardı edilen güvenlik özelliklerinden biridir.
- Laravel Sanctum, azaltılmış saldırı yüzeyi nedeniyle genellikle SPA kimlik doğrulaması için tercih edilir.
- Birçok gerçek dünya Laravel hack’i, .env dosyalarının açığa çıkmasından kaynaklanmaktadır; çerçeve hatalarından değil.
- CSRF koruması, birçok çerçeve bunu benimsemeden çok önce Laravel’de varsayılan olarak etkinleştirilmiştir.
Sıkça Sorulan Sorular
S1: Laravel kutudan çıktığı gibi güvenli midir?
Evet, ancak en iyi uygulamaları takip ettiğinizden ve yerleşik korumaları aşmadığınızdan emin olmalısınız.
S2: Laravel’de ham SQL kullanmalı mıyım?
Sadece kesinlikle gerekli olduğunda ve her zaman parametre bağlamasıyla.
S3: Bağımlılıklar ne sıklıkla güncellenmelidir?
Düzenli olarak. Güvenlik yamanları sık sık yayımlanır.
S4: Hashing parolaları korumak için yeterli midir?
Evet, güçlü şifre politikaları ve hız sınırlama ile birleştirildiğinde.
S5: En büyük Laravel güvenlik hatası nedir?
Hassas yapılandırmaların .env veya halka açık depolama ile açığa çıkarılmasıdır.
Sonuç
Laravel güvenliği, daha fazla kod eklemekle ilgili değil; çerçeveyi doğru şekilde kullanmakla ilgilidir. Yerleşik korumaları kullanarak ve bunları gerçek dünya tehdit modelleriyle hizalayarak, geliştiriciler, zafiyetlerin üretim aşamasına gelmeden önce ortadan kaldırılması açısından büyük adımlar atabilirler.
Laravel, dünya çapında milyonlarca uygulamaya güç verirken, güvenlik en iyi uygulamaları, hobi projelerini kurumsal düzeyde sistemlerden ayıran unsurdur.
Yazar Hakkında: Manoj, AddWeb Solution‘da Kıdemli PHP Laravel Geliştiricisi olarak, güvenli ve ölçeklenebilir web uygulamaları ve REST API’ler inşa ederken, temiz ve yeniden kullanılabilir arka uç koduna dair bilgiler paylaşmaktadır.
Kaynak: Orijinal Makale
- Temel Çıkarımlar
- İçindekiler
- Giriş
- Laravel Güvenlik Mimarasını Anlamak
- Yaygın Zafiyet 1: SQL Injection
- Yaygın Zafiyet 2: Cross-Site Request Forgery (CSRF)
- Yaygın Zafiyet 3: Cross-Site Scripting (XSS)
- Yaygın Zafiyet 4: Kimlik Doğrulama ve Yetkilendirme Hataları
- Yaygın Zafiyet 5: Toplu Atama
- Yaygın Zafiyet 6: Dosya Yükleme ve Depolama Riskleri
- Yaygın Zafiyet 7: Hassas Veri Açıkları
- Hız Sınırlama ve Brute Force Koruması
- Güvenli Yapılandırma ve Dağıtım Pratikleri
- İstatistikler
- İlginç Gerçekler
- Sıkça Sorulan Sorular
- Sonuç


