Laravel projelerinde güvenlik: yayın öncesi kontrol listesi
Yetkilendirmeden dosya yüklemeye, oturum yönetiminden hata mesajlarına kadar bir Laravel uygulamasını yayına almadan önce gözden geçirmeniz gereken maddeler.
Laravel, güvenli varsayılanlarla gelir; ancak varsayılanları bozmak da kolaydır. Aşağıdaki liste, yayına almadan önce hızlıca geçilebilecek pratik kontrolleri içerir.
Ortam ve yapılandırma
APP_DEBUG=falseveAPP_ENV=productionolmalı. Hata ayıklama açık kalırsa yığın izleri ve ortam değişkenleri sızabilir.APP_KEYüretilmiş ve yedeklenmiş olmalı; anahtar değişirse şifrelenmiş veriler (ör. lisans anahtarları) çözülemez..envdosyası web kökünün dışında veya erişime kapalı olmalı.- Yapılandırma, rota ve görünüm önbellekleri üretimde oluşturulmalı.
Yetkilendirme
En sık görülen açık, kimlik doğrulaması yapılmış ama yetkilendirmesi unutulmuş uç noktalardır. Kullanıcı giriş yapmıştır; ancak başka bir kullanıcının sipariş numarasını yazdığında o siparişi görebiliyordur.
- Model bağlama (route model binding) kullanılan her yerde sahiplik kontrolü yapın:
$order->user_id === auth()->id()ya da bir Policy. - Yönetim rotalarını rol/izin ara katmanıyla koruyun; görünümde butonu gizlemek yeterli değildir.
- Toplu atama (mass assignment) için
$fillablelistesini dar tutun;role_id,is_active,balancegibi alanları asla kullanıcı girdisinden doldurmayın.
Girdi ve çıktı
- Tüm form istekleri doğrulanmalı (FormRequest veya
validate()). - Blade'de
{{ }}kullanın;{!! !!}yalnızca temizlenmiş HTML için. - Kullanıcıdan gelen HTML içeriği (ör. yorum) sunucu tarafında beyaz listeyle temizlenmeli.
- Ham SQL sorgusu yazıyorsanız parametre bağlama kullanın;
whereRawiçine kullanıcı girdisi koymayın.
Dosya yükleme
- MIME türünü ve gerçek dosya içeriğini doğrulayın; uzantıya güvenmeyin.
- Yüklenen dosyaları rastgele adla saklayın, orijinal adı ayrı alanda tutun.
- Hassas dosyaları
storage/appaltında tutup imzalı bağlantıyla sunun; herkese açık dizine koymayın. - Yükleme boyutunu hem PHP hem uygulama tarafında sınırlayın.
Oturum ve kimlik doğrulama
- Giriş denemelerine hız sınırı uygulayın (
throttle). - Başarılı girişte oturumu yenileyin (
session()->regenerate()). - Şifre sıfırlama bağlantılarının süresi kısa olmalı ve tek kullanımlık olmalı.
- Yönetici hesapları için iki adımlı doğrulamayı zorunlu tutmayı değerlendirin.
- Çıkışta oturumu geçersiz kılın ve CSRF anahtarını yenileyin.
Hata mesajları ve günlükler
Kullanıcıya gösterilen mesajlar teknik detay içermemeli; "veritabanı bağlantı hatası: kullanıcı adı ..." gibi bir metin saldırgana bilgi verir. Öte yandan günlüklere kişisel veri, şifre veya kart bilgisi yazılmamalıdır. Günlük dosyalarının erişim izinlerini ve saklama süresini de belirleyin.
Bağımlılıklar ve güncellemeler
composer audit çıktısını düzenli kontrol edin. Kullanılmayan paketleri kaldırın; her paket bir saldırı yüzeyidir. Ana çatı sürümünü destek takvimine göre planlı biçimde yükseltin.
Son kontrol
Yayın öncesi bir "kötü niyetli kullanıcı" turu atın: başkasının kaydını görmeye çalışın, formlara beklenmeyen değerler gönderin, yetkisiz rotalara doğrudan istek atın. Bu on beş dakikalık tur, çoğu zaman hazırlık aşamasında fark edilmeyen bir açığı ortaya çıkarır.
Yazar
Arda Yılmaz
Bogalab Yazılım ekibinde hazır web yazılımlarının kurgusu, geliştirilmesi ve müşteri projelerine uyarlanması üzerine çalışıyor.
İlgili yazılar
Bu konuyu tamamlayan diğer içeriklerimiz.
Hazır yazılım mı, sıfırdan geliştirme mi? Karar rehberi
Bir web projesine başlarken hazır bir yazılım almak mı yoksa sıfırdan geliştirmek mi daha doğru? Kararı duyguya değil, dört somut ölçüte bağlayan bir rehber.
E-ticaret sitesi açarken yapılan 7 teknik hata
Yeni açılan mağazalarda tekrar eden yedi teknik hata ve bunların satışa yansıması. Stok kilidinden ödeme adımına kadar somut kontrol noktaları.
Sayfa hızı: Core Web Vitals metriklerini doğru okumak
LCP, INP ve CLS metrikleri neyi ölçer, hangi müdahaleler gerçekten sonuç verir? Test aracındaki puanı değil, kullanıcının gördüğü hızı iyileştiren yaklaşımlar.
Okuduğunuzu uygulamaya geçirelim mi?
Yönetim paneliyle gelen hazır web yazılımlarımızı inceleyin ya da projeniz için size özel bir teklif alın.