JWT (JSON Web Token) Nedir? Durumsuz Kimlik Doğrulama
JWT (JSON Web Token), iki taraf arasında bilgiyi imzalı ve doğrulanabilir biçimde taşıyan açık bir standarttır (RFC 7519). Web'de durumsuz kimlik doğrulama için kullanılır: kimlik token'ın içine yazılır ve kriptografik olarak imzalanır. Kritik nokta: JWT imzalıdır ama şifreli değildir; payload herkes tarafından okunabilir.
JWT (JSON Web Token), iki taraf arasında bilgiyi güvenli ve doğrulanabilir biçimde taşımak için kullanılan, açık bir standarttır (RFC 7519). En yaygın kullanımı web uygulamalarında kimlik doğrulama ve yetkilendirmedir: Kullanıcı giriş yaptıktan sonra sunucu ona bir token verir, kullanıcı sonraki her isteğinde bu token'ı sunar ve sunucu kimliğini token'dan doğrular. JWT'nin öne çıkan özelliği, taşıdığı bilginin kendi içinde doğrulanabilir olmasıdır.
JWT neyi çözer? Durumsuz kimlik doğrulama
Geleneksel oturum yönetiminde sunucu, giriş yapan her kullanıcı için bellekte ya da veritabanında bir oturum kaydı tutar; kullanıcıya yalnızca bu kaydı işaret eden bir kimlik verilir. Bu yöntem çalışır ama sunucunun durum (state) tutmasını gerektirir — birden fazla sunucu olduğunda bu oturumları paylaşmak zorlaşır.
JWT farklı bir yol izler: Kullanıcının kimliği ve yetkileri doğrudan token'ın içine yazılır ve token kriptografik olarak imzalanır. Sunucunun herhangi bir oturum kaydı tutmasına gerek kalmaz; gelen token'ın imzasını doğrulaması yeterlidir. Bu durumsuz (stateless) yaklaşım, çok sayıda sunucuya ölçeklenen sistemlerde büyük kolaylık sağlar.
JWT'nin üç parçası
Bir JWT, nokta işaretiyle ayrılmış üç bölümden oluşur: header.payload.signature.
- Header (başlık): Token'ın türünü ve imzalamada kullanılan algoritmayı belirtir.
- Payload (yük): Asıl taşınan bilgi. "Claim" adı verilen alanlardan oluşur: Kullanıcı kimliği, yetkiler, token'ın son kullanma tarihi gibi. Bunlar isteyen herkes tarafından okunabilir.
- Signature (imza): Header ve payload'ın, bir gizli anahtarla üretilmiş kriptografik imzası. Token'ın yolda değiştirilmediğini kanıtlayan parçadır.
İlk iki parça yalnızca Base64 ile kodlanmıştır — şifrelenmemiştir.
Kritik nokta: JWT imzalıdır, şifreli değildir
JWT hakkındaki en yaygın ve tehlikeli yanılgı budur. Standart bir JWT'nin payload'ı şifreli değildir; herkes token'ı çözüp içindeki bilgileri okuyabilir. İmza yalnızca içeriğin değiştirilmediğini garanti eder, gizli kaldığını değil. Bu yüzden:
- Parola, kredi kartı numarası gibi hassas veriler asla JWT payload'ına konmamalıdır.
- İmza doğrulaması her istekte mutlaka yapılmalıdır; doğrulanmayan bir token hiçbir güvence sağlamaz.
Nasıl çalışır? Tipik akış
- Kullanıcı kullanıcı adı ve parolasıyla giriş yapar.
- Sunucu bilgileri doğrular ve kullanıcının kimliğini içeren, imzalı bir JWT üretip gönderir.
- İstemci bu token'ı saklar ve sonraki isteklerde (genellikle
Authorizationbaşlığında) sunucuya yollar. - Sunucu her istekte token'ın imzasını ve son kullanma tarihini doğrular; geçerliyse isteği kullanıcının kimliğiyle işler.
Güvenlik ve dikkat edilmesi gerekenler
- Son kullanma süresi kısa tutulmalıdır. İmzalı bir token, süresi dolana kadar geçerlidir; durumsuz olduğu için tek bir token'ı anında iptal etmek zordur. Bu yüzden kısa ömürlü erişim token'ları ve ayrı bir yenileme (refresh) token'ı deseni yaygındır.
- Gizli anahtar korunmalıdır. İmza anahtarı sızarsa, saldırgan geçerli token üretebilir.
- Algoritma dikkatle seçilmelidir. Token'ın belirttiği algoritmaya körü körüne güvenmek (özellikle "imzasız" anlamına gelen
nonealgoritması) klasik bir güvenlik açığı kaynağıdır; sunucu beklediği algoritmayı kendisi dayatmalıdır.
Nereden öğrenmeli?
JWT'nin resmi tanıtım kaynağı jwt.io'dur; burada bir token'ın üç parçasını canlı olarak çözüp inceleyebilir, yapısını somut biçimde görebilirsiniz. Standardın kendisi RFC 7519'da tanımlıdır ve claim'lerin resmi anlamlarını içerir. Pratikte çoğu dil ve çatı için olgun JWT kütüphaneleri vardır; doğru yaklaşım, imza doğrulamasını ve süre kontrolünü elle yazmak yerine bu denenmiş kütüphanelere bırakmaktır.
Benzer İçerikler
Node2Shell: Node.js'te Brotli Çözücüsünde Kritik Uzaktan Kod Çalıştırma Açığı (CVE-2026-111497)
Node.js 21 Ekim 2026'da 10 güvenlik açığını kapatan acil bir sürüm yayınladı. En ciddisi, Node2Shell olarak anılan CVE-2026-111497: gömülü Brotli çözücüsündeki sınır dışı yazma hatası uzaktan kod çalıştırmaya imkân veriyor. Tek çözüm v26.12.1, v24.22.1 veya v22.23.4 sürümlerine güncellemek.
27 Eki 20263 kaynakSEC3 DKPHP2Shell: PHP'de Kimlik Doğrulamasız Uzaktan Kod Çalıştırma Açıkları (CVE-2026-109618 ve CVE-2026-109619)
PHP projesi 21 Ekim 2026'da, birlikte PHP2Shell olarak anılan iki kritik açığı kapatan güvenlik sürümleri yayınladı. CVSS 9.2 puanlı açıklar kimlik doğrulama gerektirmeden uzaktan kod çalıştırmaya izin veriyor ve aynı gün istismar edilmeye başlandı. Tek gerçek çözüm 8.5.12, 8.4.27, 8.3.36 veya 8.2.35 sürümlerine güncellemek.
27 Eki 20264 kaynakSEC1 DKThe Hacker News: Siber Güvenlikte Güvenilir Bir Kaynak
The Hacker News, siber güvenlik alanındaki en güncel haberler ve analizler için başvurulacak en güvenilir kaynaklardan biridir.
22 Ağu 20268 kaynak