JWT Dekoderi
Bir JWT (noktalarla ayrılmış, base64url ile kodlanmış üç parçadan oluşan) yapıştırın; çözücü başlığı, yükü ve imzayı çözer ve düzgün biçimde gösterir; ayrıca tespit edilen algoritmayı, tokenin yerel saatinize göre son kullanma zamanını ve nbf (not-before), iat (issued-at) ile exp (expiry) değerlerinin tutarlı olup olmadığını da gösterir. Gizli anahtarınız veya açık anahtarınız varsa isteğe bağlı olarak imza doğrulaması yapabilirsiniz.
Bir JWT nasıl çözülür
-
1
Tokeni yapıştırın
`.` ile ayrılmış üç base64url dizesi (başlık.yük.imza).
-
2
Çözülen başlığı okuyun
Algoritma, tip ve anahtar ID'si (`kid`). Algoritma, doğrulama için hangi anahtar türünün gerekenini belirtir.
-
3
Yükü okuyun
Standart iddialar (`iss`, `sub`, `aud`, `exp`, `iat`, `nbf`, `jti`) ve uygulamanız tarafından düzenlenmiş herhangi bir özel iddia.
-
4
Doğrulayın (isteğe bağlı)
İmzanın geçerliliğini doğrulamak için HMAC gizli değerini (HS256/384/512 için) veya kamusal anahtarı (RS256, ES256 vb. için) belirtin.
JWT’nin Anatomisi
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFsaWNlIiwiaWF0IjoxNjAwMDAwMDAwfQ
.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Her segment, standart Base64 yerine Base64URL formatında kodlanmıştır. Başlık {"alg":"HS256","typ":"JWT"} gibi bir JSON verisidir; yük {"sub":"1234567890","name":"Alice","iat":1600000000} gibi bir JSON verisidir; imza ise header.payload için kullanılan HMAC veya RSA imzasıdır.
Standart Talepler (RFC 7519)
| Talep | Ad | Notlar |
|---|---|---|
iss |
Veren | Tokeni kimin ürettiği |
sub |
Özne | Tokenin kimi ilgilendirdiği |
aud |
Hedef kitle | Tokenin kimin için olduğu |
exp |
Son kullanma zamanı | Unix zaman damgası; bu zamandan sonra reddedilir |
nbf |
Şu andan önce değil | Unix zaman damgası; bu zamandan önce reddedilir |
iat |
Düzenlenme zamanı | Tokenin oluşturulduğu andaki Unix zaman damgası |
jti |
JWT kimliği | İptal listeleri için benzersiz tanımlayıcı |
Desteklenen Algoritmalar
alg değeri |
Anahtar türü |
|---|---|
HS256/HS384/HS512 |
Paylaşılan HMAC gizli anahtarı |
RS256/RS384/RS512 |
RSA açık anahtarı |
ES256/ES384 |
ECDSA açık anahtarı |
PS256/PS384 |
RSA-PSS açık anahtarı |
EdDSA / Ed25519 |
Edwards eğrisi |
none |
Buna asla güvenmeyin, imzalanmamış tokenler |
alg: none tuzağı
İlk JWT kütüphaneleri "alg": "none" tokenlerine izin veriyor ve bunları olduğu gibi geçerli kabul ediyordu. Her zaman şunları yapın:
- Uygulamanızın kabul ettiği algoritmaları beyaz listeye alın.
alg: none’ı koşulsuz olarak reddedin.- Doğrulama kodunuz
RS256beklerkenalg: HS256’yı reddedin (“algoritma karıştırma” saldırısı).
JWT Ne Değildir
- Şifreli değildir. Başlık ve yük base64 ile kodlanmıştır ve bu kod kolayca çözülebilir. Gizli bilgileri JWE ile sarmalamadan bir JWT’ye asla koymayın.
- Varsayılan olarak iptal edilemez. Bir JWT verildikten sonra
expzamanına kadar geçerlidir. İptal için bir kara liste ya da kısa süreli geçerlilik artı yenileme tokenleri gerekir. - Her kullanım durumunda oturum çerezinin yerini tutmaz. Sunucu tarafında saklanan opak tokenler çoğu zaman daha basit ve daha güvenlidir.
Yaygın Hatalar
- Başlığa güvenmek.
kidvealgdeğerleri tokenin kendisinden gelir. Ele geçirilmiş bir sunucu bunları keyfî olarak ayarlayabilir; her zaman sabit bir listeye karşı doğrulayın. nbfveiatsapmasını yok saymak. Saat kayması nedeniyleiat > nowdurumu oluşabilir. Küçük bir tolerans bırakın (30–60 saniye).- JWT’lerin tamamını günlüğe yazmak. Yük çoğunlukla kullanıcı kimlikleri, e-posta adresleri ve izinler içerir, bunlar stdout’a düşmemesi gereken PII verileridir.
- Zayıf bir gizli anahtarla HS256 kullanmak. 16 karakterlik bir gizli anahtar dakikalar içinde kaba kuvvetle kırılabilir. En az 256 bit rastgele entropi kullanın.
Sık Sorulan Sorular
Hayır. Kod çözme işlemi tarayıcınızda gerçekleşir. Token yerel olarak saklanır; bu özellikle önemli çünkü JWT’ler genellikle oturum verilerini, kullanıcı kimliklerini ve izinleri içermektedir.
Evet. Paylaşılan HMAC gizli anahtarını veya PEM ile kodlanmış açık anahtarı yapıştırırsanız doğrulama tarayıcınızda gerçekleşir. Anahtar cihazınızdan asla çıkmaz.
Bu, tokenin imzalanmamış olduğu anlamına gelir. Üretim ortamında böyle tokenleri asla kabul etmeyin; kolayca sahte üretilebilirler. Birçok önemli CVE, tam olarak varsayılan olarak alg: none’ı kabul eden kütüphanelerle ilgiliydi.
JWT imzası gizliliği değil, doğruluğu kanıtlar. Başlık ve yük, tersine çevrilebilir bir şekilde Base64 URL kodlaması kullanır. Gizlilik açısından JWT etrafında JWE (JSON Web Şifreleme) kullanın veya hassas verileri yük içine yerleştirmeyin.
İlgili Araçlar
ASCII Tablosu Referansı
NUL, LF ve DEL dahil her kod için ondalık, onaltılık, sekizlik ve ikili değerlerle HTML sayısal karakter başvurusu gösterimini sunan tam ASCII tablosu.
HTML Karakter Referansı
HTML varlıklarının aranabilir listesi; adlandırılmış ve sayısal kodlarıyla birlikte özel karakter ve semboller için tek tıkla kopyalama.
Klavye kısayolları başvurusu
macOS, Windows ve Linux’ta VS Code, Chrome ve GNU Readline kullanan Bash için belgelenmiş varsayılan kısayolları arayın.
FPS Sayacı
requestAnimationFrame ile tarayıcı FPS değerini ölçün: yumuşatma, en düşük ve en yüksek kare hızı, uyarı eşiği ve isteğe bağlı grafik. Yerel çalışır, yükleme ve API yoktur.
EditorConfig Oluşturucu
Girinti stili ve boyutu, satır sonu, karakter kümesi ve boşluk kurallarınızla bir .editorconfig dosyası oluşturarak IDE ve editörler arasında tutarlı biçimlendirme sağlayın.
E-posta Doğrulayıcı
Bir e-posta adresini doğrulayın: RFC 5322 sözdizimi kontrolü, canlı MX kaydı sorgulama, ayrıca yerel kısım, alan adı ve uzunluk bilgileri. Hiçbir e-posta gönderilmez.
Araç diğer dillerde mevcuttur
- Decodificador JWT [PT]
- Mã giải mã JWT [VI]
- JWTデコーダ [JA]
- JWT 해독기 [KO]
- Decodificador JWT [ES]
- مُفكّك JWT [AR]
- JWT-decoder [NL]
- JWT-avkodare [SV]
- ตัวถอดรหัส JWT [TH]
- Décodeur JWT [FR]
- Decoder JWT [ID]
- JWT-Dekoder [DE]
- Dekoder JWT [PL]
- Decoder JWT [IT]
- Декодировщик JWT [RU]
- JWT 解码器 [ZH]
- JWT Decoder [EN]