JWT (JSON Web Token) Güvenliği: Doğru ve Yanlış Kullanım
6 Ekim 2026
JWT (JSON Web Token), kimlik ve yetki bilgisini taşıyan, imzalı ve kendi kendini doğrulayan bir token biçimidir. API ve oturum yönetiminde çok yaygındır. Ancak JWT’nin güvenliği, tümüyle doğru doğrulanmasına bağlıdır; klasik hatalar, kimlik doğrulamayı tümden atlatmaya kadar gidebilir. Bu yazıda JWT’nin doğru ve yanlış kullanımını ele alıyoruz.
JWT nasıl çalışır?
Bir JWT üç parçadan oluşur: başlık (header), yük (payload) ve imza. Başlık imza algoritmasını, yük iddiaları (kim, ne zamana kadar geçerli, hangi yetkiler) taşır, imza ise token’ın değiştirilmediğini doğrular. Sunucu, imzayı doğrulayarak token’a güvenip güvenmeyeceğine karar verir.
Kritik nokta: JWT’nin yük kısmı imzalıdır ama şifreli değildir. Yani içeriği herkes okuyabilir (base64); imza yalnız değiştirilmediğini garanti eder. Bu yüzden JWT içine sır koymayın.
Klasik güvenlik hataları
alg: nonekabul etmek: Bazı kütüphaneler, başlıktaki algoritma “none” ise imzayı hiç doğrulamaz. Saldırganalg: nonegönderip imzasız bir token’la kimliğe bürünebilir. Sunucu, kabul edeceği algoritmayı kendisi belirlemeli; token’ın başlığındaki algoritmaya güvenmemeli.- Algoritma karıştırma (RS256 → HS256): Sunucu, asimetrik doğrulama (RS256) beklerken saldırgan simetrik (HS256) bir token gönderip, herkese açık anahtarı “gizli anahtar” olarak kullanabilir. Beklenen algoritmayı katı biçimde sabitleyin.
- Zayıf imza sırrı: HS256’da tahmin edilebilir/kısa bir sır, imzanın kırılmasına yol açar. Güçlü, rastgele bir sır kullanın.
- Süre ve iptal sorunları: JWT genelde durumsuzdur; verildikten sonra süresi dolana kadar geçerlidir. Uzun süreli token’lar, çalındığında uzun süre tehlikelidir. Kısa ömürlü erişim token’ı + kontrollü yenileme kullanın; kritik durumlar için iptal mekanizması düşünün.
- Güvensiz saklama: Token’ı XSS’e açık
localStorage’da tutmak, bir XSS’i hesap ele geçirmeye çevirir. Bağlama göreHttpOnlyçerez gibi daha güvenli seçenekleri değerlendirin.
Özet
JWT güçlü ama “her şey doğrulamada” bir mekanizmadır. Güvenli kullanım: kabul edilen algoritmayı sunucu sabitlesin (alg: none ve algoritma karıştırma engellensin), güçlü imza sırrı kullanılsın, süreler kısa tutulsun ve token içine sır konmasın (yük şifreli değildir). Token’ları güvenli saklayın; JWT bir yetkilendirme kontrolünün yerine geçmez.
Kaynaklar: RFC 8725 (JWT Best Current Practices), OWASP JWT Cheat Sheet.
API’lerinizde JWT doğrulaması doğru mu kurulmuş? CyberTestify’ın aktif doğrulama testleri, kimlik doğrulamalı API akışlarını değerlendirir.