Ana içeriğe geç
FreeOnlineTools Go
Türkçe
Nasıl yapılır

JWT'yi Çözme ve Claimlerini Güvenli İnceleme

FreeOnlineTools Team tarafından · 2026-08-28 güncellendi

Hızlı Yanıt

JWT, noktalarla birleştirilmiş üç Base64URL dizgidir: header.payload.signature. Claim'leri incelemek için header ve payload'ı Base64URL decoding ile çözün —ama çözme sadece veriyi okur, authenticity doğrulamaz. Her zaman server'da signature doğrulayın. Token'ları incelemek için JWT Decoder kullanın.

giriiş

JSON Web Token (JWT, RFC 7519), authentication ve authorization için kullanılan kompakt, URL-safe token formatıdır. Noktalarla ayrılmış üç Base64URL kodlanmış parçaya sahiptir: header.payload.signature. Header algoritmayı açıklar, payload claim'leri (user id, roles, expiry) taşır ve signature token güvenilir bir tarafça verilmiş olduğunu kanıtlar. Kritik: header ve payload kodlanmış, şifrelenmemiş —herkes okuyabilir.

Adım adım

  1. Tokenı üç parçaya bölün

    Bir JWT xxxxx.yyyyy.zzzzz'a benziyor. Başlığı (bölüm 0), yükü (bölüm 1) ve imzayı (bölüm 2) elde etmek için nokta karakterini bölün. Tam olarak üç parça yoksa belirteç hatalı biçimlendirilmiştir.

  2. Base64URL-başlığın kodunu çözer

    Başlık, {"alg":"HS256","typ":"JWT"} gibi Base64URL kodlu bir JSON nesnesidir. Base64URL, + ve / yerine - ve _ kullanır ve dolguyu atlar. Kodunu çözün, ardından algoritmayı okumak ve yazmak için JSON.parse komutunu kullanın. JWT Kod Çözücümüz bunu otomatik olarak yapar.

  3. Base64URL-yükün kodunu çözer (talepler)

    Yük, JSON talep nesnesidir. Kayıtlı talepler arasında iss (verici), sub (konu), aud (hedef kitle), exp (son kullanma tarihi), nbf (önce değil), iat (verilme tarihi) ve jti (belirteç kimliği) bulunur. Özel talepler uygulamaya özeldir (ör. rol, e-posta). Şifreyi çözün ve inceleyin, ancak doğrulanana kadar güvenmeyin.

  4. Son kullanma tarihini ve daha önce olmayan talepleri kontrol edin

    exp ve nbf Unix zaman damgalarıdır (saniye). Mevcut süre exp'yi geçmişse jetonun süresi dolmuştur ve reddedilmelidir. Geçerli saat nbf'den önceyse jeton henüz geçerli değildir. UX için bu istemci tarafını kontrol edin, ancak güvenlik için bunları sunucu tarafında uygulayın.

  5. Sunucudaki imzayı doğrulayın (asla istemci tarafında değil)

    İmza, HS256 için HMAC-SHA256(gizli, başlık.payload) veya RS256/ES256 için RSA/ECDSA imzasıdır. Doğrulama, tarayıcıya asla ulaşmaması gereken gizli veya genel anahtarı gerektirir. Doğrulamak için jsonwebtoken (Node) veya jose gibi bir kitaplık kullanın; asla kendi kriptonuzu yazmayın.

Örnekler

Tipik bir JWT (üç parça)

Giriş: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpmeJf36POk6yJV_adQssw5c

Çıkış: Header: {"alg":"HS256","typ":"JWT"} Payload: {"sub":"1234567890","name":"John Doe","iat":1516239022}

Standart taleplerle kodu çözülmüş yük

Giriş: Gerçek bir kimlik doğrulama jetonunun yükü

Çıkış: {"sub":"user-42","iss":"freeonlinetoolsgo.com","exp":1767229200,"iat":1767225600,"role":"admin"}

Süresi dolmuş jeton tespiti

Giriş: exp: 1609459200 (2021-01-01) 2026-08-28'de kontrol edildi

Çıkış: Token is expired —current time (1767225600) > exp (1609459200). Reject and prompt re-login.

Yaygın Sorunlar

  • Kod çözmeyi doğrulama olarak ele alma: Herkes herhangi bir iddiayla ve sahte imzayla bir JWT oluşturabilir. Kod çözme, yükü okur ancak hiçbir şeyi kanıtlamaz. Taleplere güvenmeden önce her zaman imzayı sunucudaki gizli/genel anahtarla doğrulayın.
  • 'Yok' algoritmasının kullanılması: JWT spesifikasyonu, güvenli olmayan belirteçler için alg: none'a izin verir. Doğrulayıcınız alg: none'u kabul ederse, saldırgan jetonları taklit edebilir. Kitaplığınızı hiçbirini reddedecek ve beklenen algoritmaları beyaz listeye alacak şekilde yapılandırın.
  • JWT'leri localStorage'da depolamak: XSS, localStorage'ı okuyabilir ve belirteçleri dışarı çıkarabilir. Oturum belirteçleri için httpOnly, Secure, SameSite=Strict çerezlerini veya yenileme belirteçli çerez içeren kısa ömürlü bellek içi belirteçleri tercih edin.
  • Exp/aud/iss kontrol edilmiyor: çalınan bir jeton, süresi dolana kadar geçerlidir. Hizmetler arasında belirtecin yeniden oynatılmasını önlemek için her istekte exp (son kullanma tarihi), aud (hedeflenen kitle) ve iss'i (verici) her zaman kontrol edin.

İpuçları

  • Kısa ömürlü erişim belirteçleri (15 dakika) artı uzun ömürlü yenileme belirteçleri kullanın; bu, bir erişim belirtecinin çalınması durumunda pencereyi sınırlar.
  • Birden fazla hizmet belirteçleri doğruladığında HS256 (simetrik) yerine RS256'yı (asimetrik) tercih edin: her hizmet genel anahtarı alır ve yalnızca verenin özel anahtarı vardır.
  • Sunucunun ne yayınladığını denetlemek için geliştirme sırasında JWT Kod Çözücümüzü kullanın; bu, kodu çözülmüş başlığı, yükü ve belirteci herhangi bir yere göndermeden insanlar tarafından okunabilen bir talep özetini gösterir.
  • Hassas verileri (şifreler, PII) hiçbir zaman JWT verisine koymayın; bu veriler Base64 kodlanmıştır, şifrelenmemiştir ve jetonu ele geçiren herkes her talebi okuyabilir.

İlgili Araçlar

İlgili Kılavuzlar

Referanslar