Profesyoneller Ne Kullanıyor? Hangisi Daha Güvenli?
2025 yılında JWT implementasyonlarında 6 kritik CVE açıklandı. Milyonlarca kullanıcıyı etkileyen bu açıklar, JWT'nin dikkatli kullanılması gerektiğini gösteriyor.
CVE-2025-4692
Algorithm confusion - yetkisiz token oluşturma
CVE-2025-30144
Signature verification bypass
CVE-2025-27371
ECDSA key recovery - token forgery
| Güvenlik Kriteri | Sanctum | JWT |
|---|---|---|
| Token Çalınırsa | Anında iptal edilir | Süresi dolana kadar geçerli |
| Token Revocation | DB'den sil = bitti | Blacklist gerekli |
| Bilinen Saldırılar | Az | Çok (algorithm confusion, none alg, vb.) |
| Oturum Kontrolü | Her istekte DB kontrolü | Stateless (kontrol yok) |
| Çoklu Cihaz Yönetimi | Kolay (her token DB'de) | Zor (ekstra mekanizma lazım) |
| "Tüm Cihazlardan Çıkış" | 1 sorgu ile | İmkansız (blacklist lazım) |
| GÜVENLİK SKORU | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
Sunucu RS256 (asymmetric) kullanıyorken, saldırgan HS256 (symmetric) ile imzalanmış token gönderir. Public key'i secret olarak kullanarak token'ı forge eder.
Header: {"alg": "HS256"} → Public key ile imzala → Sunucu kabul eder!
Token header'ında "alg": "none" yazılır. Bazı kütüphaneler bunu kabul eder ve imza kontrolü yapmaz.
Header: {"alg": "none"} → İmza yok → Sunucu kabul eder!
HMAC tabanlı JWT'lerde secret zayıfsa (örn: "secret", "password", "123456"), saldırgan brute force ile secret'ı bulur ve istediği token'ı üretir.
hashcat -m 16500 jwt.txt wordlist.txt → Secret bulundu: "admin123"
Token çalındığında, süresi dolana kadar kullanılabilir. Sanctum'da anında iptal edilir, JWT'de imkansız (blacklist olmadan).
260M+ kullanıcı, günde 1 milyar+ API isteği
OAuth 2.0 + JWT hibrit
Kısa süreli access token (15 dk)
Refresh token rotasyonu
Device fingerprinting
Authorization Code Flow
OAuth 2.0 (PKCE)
Access token: 1 saat
Refresh token: uzun süreli
Scope-based permissions
Real-time requirements
OAuth 2.0 + JWT
Microservices arası JWT
Location-based validation
Rate limiting
Taylor Otwell'in tercihi
Sanctum - SPA & Mobil için
Passport - OAuth2 gerekirse
JWT önerilmiyor (3rd party)
Büyük şirketler saf JWT kullanmıyor. Hepsi şu kombinasyonu kullanıyor:
+ Tenant Migration
personal_access_tokens migration'ını tenant klasörüne kopyala
php artisan tenants:migrate çalıştır (mevcut tenant'lara ekler)