Üç parçalı, imzalanmış taşıyıcı token
JWT (JSON Web Token, RFC 7519), nokta ile ayrılmış üç Base64URL parçadan oluşur: header.payload.signature. Header imza algoritmasını (alg) ve token tipini (typ) belirtir; payload uygulamaya özgü claim'leri (sub, exp, iat, iss, aud ...) taşır; signature ise header + payload üzerinde HMAC (HS256) veya asimetrik (RS256, ES256) algoritma ile üretilir.
Güvenlik notları: alg: none kabul eden bir doğrulayıcı kritiktir — her zaman beklenen algoritmayı açıkça kontrol edin. Token ömrünü (exp) kısa tutun, refresh token ayrı kullanın, anahtarları periyodik olarak döndürün (key rotation). Daha fazla ayrıntı için REST API güvenlik rehberimizi okuyun.
JWT hakkında
Evet. JWT şifrelenmez, yalnızca imzalanır (JWS). Header ve payload basit Base64URL kodlamadır; herkes okuyabilir. Secret yalnızca imzayı doğrulamak için gerekir. Gizli veri taşımak için JWE (encrypted) kullanın veya hassas veriyi token'a hiç koymayın.
localStorage JavaScript'ten erişilebilir — XSS olursa token çalınabilir. HttpOnly + Secure + SameSite=Lax işaretli cookie JavaScript'ten erişilemez ve CSRF koruması ile kombine edildiğinde daha güvenlidir. Üretimde HttpOnly cookie tercih edilir; SPA dışı entegrasyonlarda Authorization header kullanın.
Bazı eski kütüphaneler header'daki `alg` değerini körü körüne kullanır. Saldırgan `alg: none` değeri ve imzası olmayan bir token göndererek doğrulamayı atlatabilir. Çözüm: doğrulamada beklenen algoritmayı sabitlemek (allow-list), `none` değerini her zaman reddetmek.
JWS (JSON Web Signature) sadece bütünlük ve özgünlük sağlar — içerik okunabilir. JWE (JSON Web Encryption) ise içeriği şifreler, sadece anahtara sahip taraf okuyabilir. Standart "JWT" tipik olarak JWS'dir; hassas veri taşıması gerekiyorsa JWE kullanın.
API güvenlik danışmanlığı
JWT yapılandırması, OAuth2 akışları, rate limiting ve penetration test — KEYDAL ekibi uçtan uca destek verir.