Skip to content

Glossary

Header (JWT/JWS)

Bir JWT'nin ilk segmenti

By Published Updated

Bir JWT'nin (veya JWS'nin) başlığı, nokta ile ayrılmış ilk segmenttir: tokenın imza özelliklerini tanımlayan, base64url kodlu bir JSON nesnesidir. Kodu çözdüğünüzde genellikle 2-5 alan içeren küçük bir JSON nesnesi elde edersiniz.

Standart başlık alanları (RFC 7515 §4):

  • alg — algoritma. Zorunlu. Örn. HS256, RS256, ES256 veya none.
  • typ — tür. Yük bir JWT iddia kümesiyse geleneksel olarak "JWT".
  • kid — anahtar kimliği. Veren anahtar döndürdüğünde alıcının anahtar kümesinden doğru anahtarı seçmesini sağlar.
  • jwk / jku — gömülü JSON Web Anahtarı veya bir URL'si. Daha az yaygın; kullanıldığında güvenlik hassasiyeti gerektirir.
  • cty — içerik türü. Yük iç içe JOSE yapısı olduğunda kullanılır (örn. JWS içinde JWE).

Çalışılmış örnek. Aşağıdakine çözülen bir başlık:

{ "alg": "RS256", "typ": "JWT", "kid": "2024-q1-key" }

tokenın RS256 (RSA + SHA-256) ile imzalandığını, bir JWT olduğunu (dolayısıyla yükün bir iddia kümesi olduğunu) ve verenin anahtar dizinindeki 2024-q1-key ile tanımlanan anahtarla imzalandığını bildirir.

Kritik güvenlik notu: yalnızca alg alanına güvenmeyin. Algoritmanın anahtarınıza uygun olduğunu doğrulayın. Alg karışıklığı saldırısı, RSA açık anahtarınızı HMAC sırrı olarak kullanarak HS256 (HMAC) ile imzalanmış bir token iletmek suretiyle çalışır — doğrulayıcınız alg'e körü körüne güveniyorsa sahtecilik kabul edilir.

Başlığın base64url kodlaması, onu insan tarafından incelenebilir kılar: herhangi bir JWT'nin ilk nokta ile ayrılmış segmentini bir base64url çözücüye yapıştırmak, algoritmayı ve anahtar referansını saniyeler içinde ortaya çıkarır. Bu, her JWT hata ayıklama oturumunun giriş noktasıdır — başlık anlamsız bir şeye çözülüyorsa token bozuk biçimlendi; tanımadığınız bir JSON nesnesine çözülüyorsa veren bir şeyi değiştirdi.

Ne zaman ve neden önemli

JWT başlığı, bir hizmetin token doğruladığı her seferinde önemlidir. Klasik CVE zinciri: bir doğrulayıcı alg alanını yüzde değerinde kabul eder ve "alg": "none" belirten bir tokenın hiç imza doğrulaması yapılmadan geçmesine izin verir. Bu hata, 2015 yılı gibi yakın bir zamana ait üretim kütüphanelerinde gönderilmiştir (CVE-2015-9235, Auth0'ın node-jsonwebtoken'ını etkileyen). Savunma, doğrulama çağrısında kütüphanenin kabul etmesi gereken tam algoritmayı zorlamaktır — örn. jwt.verify(token, key, { algorithms: ['RS256'] }) — ve algoritmayı seçmek için başlığa asla güvenmemek. İkinci bir hata sınıfı olan alg karışıklığı saldırısı, başlığa dayanarak HMAC ile RSA'yı otomatik seçen kütüphaneleri istismar eder: saldırgan doğrulayıcıya HS256 iddia eden ancak (yayınlanan) RSA açık anahtarıyla HMAC sırrı olarak imzalanmış bir token sunar. Doğrulayıcı açık anahtarı kullanarak doğrular ve sahtecilik kabul edilir. Her iki hata da başlığa güven sorunudur. Yeni JWT entegrasyonları için, doğrulama çağrısını denetleyin ve algoritmanın sabitlendiğini doğrulayın. Referans: OWASP — JSON Web Token hile sayfası.

Üretim anahtar döndürmede kid başlığı: büyük ölçekte token veren herhangi bir gerçek dünya sisteminde imzalama anahtarının periyodik olarak döndürülmesi gerekir — her 90 günde bir yaygın bir politikadır. kid alanı, verenin birden fazla anahtarı aynı anda yayınlamasını sağlar (uçuştaki tokenlar için eski anahtarlar, yeni ihraçlar için yeni anahtarlar) ve doğrulayıcı doğru olanı JWKS uç noktasından seçer. Standart döndürme modeli: yeni anahtarı JWKS'de duyururken eski anahtarla imzalamaya devam edin, bir token ömrü bekleyin, ihracı yeni anahtara geçirin, bir ömür daha bekleyin, ardından eski anahtarı JWKS'den kaldırın. kid alanı bunu zarif kılan şeydir — onsuz anahtar döndürme, senkronize bir bayrak günü geçişi gerektirir.

jku / x5u saldırı vektörü nasıl görünür: bazı uygulamalar başlığın, doğrulama anahtarının bulunduğu iddia edilen rastgele bir URL'ye işaret etmesine izin verir. jku'yu kontrol ettiği bir URL'ye ayarlayan bir saldırgan, istediği herhangi bir anahtarı sunabilir ve doğrulayıcı bunu kullanır. Modern kılavuz (RFC 8725, JOSE en iyi uygulamaları), jku/x5u'yu ya tamamen reddetmek ya da güvenilir URL'lerin izin listesini uygulamaktır. Yeni JWT entegrasyonları, başlık kontrollü anahtar konumuna güvenmemelidir. Referans: RFC 8725 — JSON Web Token Güncel En İyi Uygulamaları.

Hesaplayıcıyı deneyin

Herhangi bir JWT başlığındaki alg, typ ve kid alanlarını tek yapıştırmayla inceleyin.

JWT çözücüyü aç →

Frequently asked questions

JWT başlığı (header) nedir?
JWT başlığı, bir tokenın ilk base64url kodlu segmentidir. Token türünü (typ) ve HS256 ya da RS256 gibi imzalama algoritmasını (alg) bildiren bir JSON nesnesidir.
Başlık, token doğrulamasını nasıl etkiler?
Doğrulayıcı, imzayı kontrol ederken hangi algoritmayı kullanacağını belirlemek için başlıktaki alg iddiasını okur. Başlık üzerinde oynanırsa yeniden hesaplanan imza eşleşmez.
'alg: none' güvenlik açığı nedir?
Bazı erken JWT kütüphaneleri başlıkta alg: none değerini kabul eder ve imza doğrulamasını tamamen atlayarak herkesin token sahtecilik yapmasına izin verirdi. Güvenli uygulamalar kabul edilen algoritmalar için beyaz liste kullanmalı ve 'none' değerini reddetmelidir.
JWT başlığına özel veri ekleyebilir miyim?
Teknik olarak evet — başlık genişletilebilir — ancak kural olarak yalnızca algoritma parametreleri (alg, typ, kid, cty) buraya aittir. Özel iddialar başlık değil, yük (payload) bölümüne yerleştirilmelidir.

Related

Published May 16, 2026 · Last reviewed May 31, 2026