mfurkanayhan// çözüm atölyesi
← Araçlar

Araç · ücretsiz

JWT çözücü

Token’ın içinde ne yazdığını göster, süre alanlarını okunur hâle getir. İmza doğrulanmıyor — doğrulamak gizli anahtarı ister ve o anahtar bir web sayfasına yapıştırılmaz.

Tarayıcında çalışır · token sunucuya hiç gitmiyor

İddialar

Sık sorulanlar

Token’ım bir yere gönderiliyor mu?

Hayır. Çözümlemenin tamamı tarayıcında yapılıyor; token cihazından çıkmıyor. Bu soru burada özellikle önemli: bir JWT kimlik bilgisidir. Süresi dolmamış bir token’ı ele geçiren, o kullanıcı gibi davranabilir. Bu yüzden “sunucuya gitmiyor” cümlesi bu araçta bir özellik değil, ön koşul.

İmzayı doğruluyor musunuz?

Hayır ve bilerek. İmzayı doğrulamak gizli anahtarı gerektiriyor; onu bir web sayfasına yapıştırmak korumaya çalıştığın şeyi ifşa etmek olur. Bu araç token’ın içeriğini okunur hâle getiriyor, geçerliliğini onaylamıyor. Doğrulama sunucunda, anahtarın yanında yapılır.

O zaman “süresi geçerli” ne anlama geliyor?

Yalnızca exp alanının şu andan sonra olduğunu. Token sahte olabilir, imzası tutmayabilir, iptal edilmiş olabilir — bunların hiçbiri buradan görünmez. Rozet bir zaman bilgisi, bir güven bilgisi değil.

exp neden bazen 1970 çıkıyor?

Çünkü JWT’de zaman alanları saniye cinsinden, milisaniye değil. Üreten taraf Date.now() yazıp 1000’e bölmeyi atlarsa değer bin kat büyük oluyor; okuyan taraf new Date(exp) deyince de 1970’e düşüyor. Araç 13 haneli bir değer görünce bunu yakalayıp uyarıyor ve saniyeye çevirip gösteriyor.

Gövdedeki Türkçe adlar neden başka araçlarda bozuluyor?

JWT parçaları Base64URL ile kodlanmış ve çözülen baytların UTF-8 olarak okunması gerekiyor. Tarayıcının atob işlevi latin1 döndürüyor; sonucu doğrudan metin sayan araçlarda Şükrü → Åükrü oluyor. Burada çözüm Kodlayıcı ile aynı çekirdeği kullanıyor ve testleri Türkçe adlarla koşuyor.

“alg: none” uyarısı ne demek?

Token’ın imzasız olduğunu. Bir dönem yaygın kütüphaneler bunu kabul ediyordu ve saldırgan imzayı silip algoritmayı none yaparak istediği içerikte token üretebiliyordu. Bugün çoğu kütüphane engelliyor ama kabul edilen algoritmayı sunucuda sabitlemek hâlâ doğru alışkanlık: gelen token’ın başlığına bakıp ona göre doğrulama yapma.

Gövdeye parola ya da kişisel veri koyabilir miyim?

Koymamalısın. Gövde şifreli değil, sadece Base64URL ile kodlanmış — bu araç dahil herkes tek tıkla okur. İmza içeriğin değişmediğini garanti ediyor, gizli kaldığını değil. Gizlilik gerekiyorsa şifreli bir taşıyıcı (JWE) ya da sunucu tarafında tutulan bir oturum gerekir.

exp yoksa ne olur?

Token’ın kendiliğinden bir bitişi olmaz; çalınırsa iptal edilene kadar geçerli kalır. İptal listesi tutmuyorsan “süresiz token” pratikte “süresiz erişim” demek. Araç bunu ayrı bir uyarı olarak gösteriyor çünkü eksik bir alan, yanlış bir alandan daha kolay gözden kaçıyor.

Çözülen içerik sayfaya nasıl basılıyor?

Yalnızca textContent ile. Bir token’ın gövdesindeki alan <img src=x onerror=…> olabilir; çözülmüş değeri innerHTML ile basan bir araç kendi kullanıcısını açığa çıkarır. Bir güvenlik aracının kendisinin güvenli olması gerekiyor.

Neden imzayı doğrulamıyoruz

Çünkü doğrulamak için gizli anahtar gerekiyor ve o anahtarı bir web sayfasına yapıştırmak, korumaya çalıştığın şeyi ifşa etmek olur. “Anahtarını gir, imzanı doğrulayayım” diyen bir araç, doğru çalışsa bile yanlış bir alışkanlık öğretiyor.

Bu araç token’ın içeriğini okunur hâle getiriyor: hangi alanlar var, süresi ne zaman doluyor, gövdede ne taşınıyor. Bunlar hata ayıklarken gerçekten ihtiyaç duyulan şeyler. Geçerlilik kararı ise sunucunun işi ve orada kalmalı.

Bir de şu var: gövde şifreli değil. İmza içeriğin değişmediğini garanti ediyor, gizli kaldığını değil. Bu araçla okunabilen her şeyi token’ı eline geçiren herkes okuyabilir — parolayı, TC kimlik numarasını, adresi oraya koymamanın sebebi bu.

Diğer araçlar: Kodlayıcı / çözücü · Numara doğrulayıcı · Tarih ve zaman · JSON ↔ CSV