← Tüm yazılar

JWT (JSON Web Token) Güvenliği: Doğru ve Yanlış Kullanım

6 Ekim 2026

JWT (JSON Web Token) Güvenliği: Doğru ve Yanlış Kullanım

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ı

  1. alg: none kabul etmek: Bazı kütüphaneler, başlıktaki algoritma “none” ise imzayı hiç doğrulamaz. Saldırgan alg: none gö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.
  2. 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.
  3. 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.
  4. 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.
  5. Güvensiz saklama: Token’ı XSS’e açık localStorage’da tutmak, bir XSS’i hesap ele geçirmeye çevirir. Bağlama göre HttpOnly ç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.