JWT Decoder + Doğrulayıcı
JSON Web Token'ı yapıştır, header / payload / signature parçalara ayır, HMAC secret ile imza doğrula. Süresi dolmuş, henüz geçerli olmayan ve "alg none" tehlikeli token'ları otomatik işaretler.
jwt · jose · hmac · hs256
JSON Web Token'ı yapıştır, header / payload / signature parçalara ayır, HMAC secret ile imza doğrula. Süresi dolmuş, henüz geçerli olmayan ve "alg none" tehlikeli token'ları otomatik işaretler.
jwt · jose · hmac · hs256
JWT (JSON Web Token) — header.payload.signature formatında, base64url ile encode edilmiş, isteğe bağlı imzalı. Üç bölümün ne içerdiğini ve imzanın ne işe yaradığını anlamak modern auth'un %80'idir.
Bu lab token'ı yapıştır → 3 parçaya böl, base64url-decode et, JSON parse et. HMAC-SHA256 secret'ını yapıştır → imzayı tarayıcıda doğrula. exp, nbf, iat claim'lerini insan-okunur tarih olarak çevir, expired ise vurgula. alg: "none" durumunu kırmızı banner ile işaretle.
{
"alg": "HS256",
"typ": "JWT"
}{
"sub": "1234567890",
"name": "Yiğit Yalım",
"iat": 1778699635,
"exp": 1778703235
}JWT şu üç parçanın . ile birleştirilmiş halidir:
{ "alg": "HS256", "typ": "JWT" }sub (subject), iat (issued at), exp (expires at) en yaygınları:
{ "sub": "user-123", "iat": 1745731600, "exp": 1745735200 }HMAC(secret, base64url(header) + "." + base64url(payload)). Ya da RSA/ECDSA. Imzayı doğrulamak için aynı secret/public key gerekir.Üç adım büyük tehlike kaynağı:
alg: "none" kabul etmek — bazı kütüphaneler (eski jsonwebtoken v0.x dahil) bu algorithm'i kabul ederdi; saldırgan imzasız token üretip kabul ettirebilirdi. Modern kütüphaneler reddeder ama verify({ algorithms: ["HS256"] }) gibi explicit allowlist kullan.
Algorithm confusion — server RS256 (asymmetric) bekliyor ama saldırgan public key'i secret olarak gönderip HS256'ya geçer. Yine algorithms allowlist'i.
Sadece decode etmek, doğrulamamak — jwt.decode() (verify değil) sadece base64url-decode yapar, signature'a bakmaz. Production'da asla decode-only kullanma; her zaman jwt.verify(token, secret, options).
exp vs nbf vs iat| Claim | Anlam | Sunucu kontrolü |
|---|---|---|
iat | Issued at | Sadece logging — geleceğe ait olamaz |
nbf | Not before | now < nbf ise reddet |
exp | Expires at | now >= exp ise reddet |
Saat farkı için ±60-300 saniye tolerance kabul etmek yaygın (clock skew). Ama 1 saatten fazla tolerance auth bypass riski.