Ana Sayfa Blog Laravel ile Güvenli API Geliştirme: Kimlik Doğrulamadan Rate Limiting'e
Yazılım Geliştirme

Laravel ile Güvenli API Geliştirme: Kimlik Doğrulamadan Rate Limiting'e

OP
OPEIS Admin
12 Haziran 2026 23 görüntülenme 7 dk okuma
Laravel ile Güvenli API Geliştirme: Kimlik Doğrulamadan Rate Limiting'e

REST API'ler, modern web ve mobil uygulamaların omurgasını oluşturuyor. Aynı zamanda saldırganların en çok hedef aldığı yüzeylerden biri de API'ler: Tarayıcı arayüzünün arkasına gizlenmedikleri için uç noktaları kolayca keşfedilir, otomatik araçlarla taranır ve zayıf noktaları sistematik biçimde denenir. Laravel, güvenli bir API geliştirmek için gereken yapı taşlarının neredeyse tamamını çekirdeğinde veya birinci parti paketlerinde sunar; ancak bu araçların doğru yapılandırılması geliştiricinin sorumluluğundadır. Bu rehberde, üretim ortamına çıkacak bir Laravel API'sinin güvenlik kontrol listesini katman katman ele alıyoruz.

Kimlik Doğrulama: Sanctum mı, Passport mı?

İlk karar noktası kimlik doğrulama mekanizmasıdır. Laravel ekosisteminde iki birinci parti çözüm öne çıkar:

  • Laravel Sanctum: SPA'lar, mobil uygulamalar ve basit token tabanlı API'ler için hafif ve pratik bir çözümdür. Çoğu proje için doğru tercih budur. SPA senaryosunda çerez ve oturum tabanlı, durum bilgisi olan (stateful) doğrulama; mobil ve üçüncü parti senaryolarında ise kişisel erişim tokenları sunar.
  • Laravel Passport: Tam kapsamlı bir OAuth2 sunucusudur. Üçüncü parti uygulamaların kullanıcılar adına yetki almasını gerektiren senaryolarda (authorization code, client credentials akışları) gereklidir. Bu ihtiyaç yoksa Passport'un getirdiği karmaşıklık gereksizdir.

Sanctum kullanırken token'lara yetenek (ability) tanımlamayı ihmal etmeyin: Salt okuma amaçlı bir entegrasyon token'ı, yazma uçlarına erişememelidir. Token'ların son kullanma süresini yapılandırmak ve kullanılmayan token'ları düzenli temizlemek de saldırı yüzeyini daraltır.

Yetkilendirme: Policy ve Gate Kullanımı

Kimlik doğrulama "sen kimsin" sorusunu, yetkilendirme ise "buna yetkin var mı" sorusunu yanıtlar. API güvenlik açıklarının en yaygını, OWASP API Top 10 listesinin de ilk sırasında yer alan nesne düzeyinde kırık yetkilendirmedir (BOLA): Kullanıcının, URL'deki kimlik numarasını değiştirerek başkasının kaydına erişebilmesi. Laravel'de bu riskin sistematik çözümü Policy sınıflarıdır. Her model için bir Policy tanımlayın ve denetleyicilerde authorize() çağrısını veya route model binding ile birlikte can middleware'ini kullanın. Sorgularınızı da her zaman erişim kapsamıyla başlatın: auth()->user()->projects() gibi ilişki üzerinden başlayan bir sorgu, yanlışlıkla tüm tabloyu açmaz.

Girdi Doğrulama ve Toplu Atama Koruması

Hiçbir istemci verisine güvenmeyin. Form Request sınıfları, doğrulama kurallarını denetleyiciden ayırarak hem okunabilirlik hem de tutarlılık sağlar. Doğrulamada izin verici değil kısıtlayıcı olun: Beklediğiniz alanları, türleri ve sınırları açıkça tanımlayın. Toplu atama (mass assignment) saldırılarına karşı modellerde $fillable listesini bilinçli tutun ve istek verisini asla doğrudan $request->all() ile modele geçirmeyin; $request->validated() kullanın. Eloquent zaten parametre bağlama ile SQL enjeksiyonuna karşı koruma sağlar; ham sorgu yazmanız gerekiyorsa mutlaka bağlı parametrelerle çalışın.

Hız Sınırlama ile Kötüye Kullanımı Engelleyin

Hız sınırlama (rate limiting); kaba kuvvet parola denemelerini, veri kazımayı ve kaynak tüketim saldırılarını frenleyen temel kontroldür. Laravel'in RateLimiter altyapısı esnek tanımlara izin verir:

  • Giriş ve parola sıfırlama uçlarına, genel uçlardan çok daha sıkı limitler uygulayın; limiti IP ve kullanıcı adı kombinasyonuna göre tanımlayın.
  • Kimliği doğrulanmış kullanıcılar için kullanıcı bazlı, anonim trafik için IP bazlı limit belirleyin.
  • Pahalı uçlara (rapor üretimi, dışa aktarma) ayrı ve düşük limitler tanımlayın.
  • Limit aşıldığında dönen 429 yanıtının Retry-After başlığı içerdiğinden emin olun; iyi niyetli istemciler buna göre davranır.

Hata Yönetimi ve Bilgi Sızıntısı

Üretim ortamında APP_DEBUG değerinin false olması pazarlık konusu değildir; aksi halde tek bir hata sayfası, veritabanı kimlik bilgilerine kadar her şeyi sızdırabilir. API yanıtlarında iç hata ayrıntılarını değil, standartlaştırılmış hata gövdeleri döndürün. "Kullanıcı bulunamadı" ile "parola hatalı" ayrımı yapmayan genel mesajlar kullanarak hesap keşfini zorlaştırın. Ayrıca yanıtlarınızı API Resource sınıflarıyla şekillendirin: Modeli doğrudan JSON'a çevirmek, ileride eklenecek hassas bir sütunun farkında olmadan dışarı açılması demektir.

Aktarım Güvenliği ve Başlıklar

Tüm API trafiği yalnızca HTTPS üzerinden akmalıdır; HTTP isteklerini yönlendirmek yerine reddetmek API'lerde daha doğru bir davranıştır. HSTS başlığını etkinleştirin, CORS yapılandırmasında izin verilen kaynakları (origin) joker karakter yerine açık liste olarak tanımlayın. Çerez tabanlı SPA doğrulaması kullanıyorsanız SameSite, Secure ve HttpOnly bayraklarının doğru ayarlandığından emin olun; CSRF korumasını devre dışı bırakmayın.

Gizli Anahtar ve Yapılandırma Yönetimi

API anahtarları, veritabanı parolaları ve üçüncü parti servis kimlik bilgileri asla sürüm kontrolüne girmemelidir. .env dosyasının depoya eklenmediğinden emin olun ve örnek değerleri .env.example ile paylaşın. Üretim ortamında yapılandırma önbelleğini (config:cache) kullanın ve kod içinde env() yerine config() çağrılarına bağlı kalın. Daha hassas kurulumlarda gizli anahtarları bir kasa çözümünde (vault) tutmak ve dağıtım sırasında enjekte etmek, hem erişim denetimi hem de anahtar rotasyonu açısından çok daha sağlıklıdır. Üçüncü parti webhook'ları alıyorsanız, gelen isteklerin imzasını (HMAC) mutlaka doğrulayın; kendi webhook'larınızı gönderirken de aynı imza mekanizmasını sunun.

API Sürümleme ve Kullanımdan Kaldırma

Güvenlikle doğrudan ilişkili görünmese de sürümleme, eski ve savunmasız uçların kontrolsüz biçimde yaşamaya devam etmesini önleyen bir disiplindir. URL tabanlı sürümleme (/api/v1/...) Laravel'de route gruplarıyla kolayca uygulanır. Yeni sürüme geçerken eskisini hemen kapatmak yerine, kullanım metriklerini izleyerek planlı bir kullanımdan kaldırma (deprecation) süreci işletin: Yanıt başlıklarıyla istemcileri bilgilendirin, belirlenen tarihte eski sürümü devre dışı bırakın. Unutulan ve izlenmeyen "zombi" uçlar, API güvenliğinin en sessiz açıklarındandır.

İzleme, Loglama ve Sürekli Test

Güvenlik, dağıtımla biten bir iş değildir. Başarısız giriş denemelerini, yetkilendirme hatalarını ve hız limiti aşımını yapılandırılmış loglarla kaydedin; bu olaylar için eşik tabanlı uyarılar kurun. Loglara token, parola veya kişisel veri yazılmadığından emin olun; KVKK açısından log dosyaları da kişisel veri barındıran sistemlerdir. Bağımlılıklarınızı composer audit ile düzenli tarayın, statik analiz araçlarını (PHPStan, Larastan) CI hattınıza ekleyin. Yetkilendirme kurallarınızı feature testleriyle güvence altına alın: "B kullanıcısı, A kullanıcısının kaydını okuyamamalı" senaryosu, yazması en kolay ama atlandığında en pahalıya mal olan testtir. Kritik API'lerde yılda en az bir kez bağımsız sızma testi yaptırmak, kör noktaları ortaya çıkarmanın en etkili yoludur.

Sonuç

Laravel, güvenli API geliştirme için olgun bir araç seti sunar; ancak güvenlik, çatının değil ekibin disiplinidir. Kimlik doğrulamayı doğru kurgulamak, her uçta yetkilendirme denetimi yapmak, girdiyi sıkı doğrulamak ve kötüye kullanımı hız limitleriyle frenlemek, API'nizin saldırı yüzeyini büyük ölçüde daraltır. OPEIS Teknoloji olarak, Laravel tabanlı kurumsal uygulamalar geliştiriyor ve mevcut API'ler için güvenlik denetimi hizmetleri sunuyoruz. API güvenliğinizi değerlendirmek için bizimle iletişime geçebilirsiniz.

Etiketler: laravel api güvenlik sanctum php web geliştirme
Paylaş:

İlgili Yazılar

İlginizi çekebilecek diğer içerikler

Mikroservis mi Monolit mi? Doğru Mimariyi Seçmek için Pratik Kriterler
09 Haziran 2026

Mikroservis mi Monolit mi? Doğru Mimariyi Seçmek için Pratik Kriterler

Mikroservis mimarisi yıllardır modern yazılımın varsayılan tercihi gibi sunuluyor; oysa yanlış ölçekte uygulandığında çözdüğünden fazla problem yaratıyor. Monolit ve mikroservis yaklaşımlarını ekip büyüklüğü, ölçeklenme ihtiyacı ve operasyonel olgunluk üzerinden karşılaştırıyor, karar için somut kriterler sunuyoruz.

2026'da Yazılım Geliştirme Trendleri
15 Ocak 2026

2026'da Yazılım Geliştirme Trendleri

Yazılım geliştirme dünyası 2026 yılında büyük dönüşümlere sahne oluyor. Yapay zeka destekli geliştirme araçlarından sunucusuz mimarilere, WebAssembly'den platform mühendisliğine bu yılın öne çıkan trendlerini inceliyoruz.

Sizi Arayalım

Numaranızı bırakın, uygun olduğunuz saat diliminde sizi arayalım.