İçeriğe atla
0 XP 0
0/6

Puan ders bitince hesaba yazılır. Bu dersi tamamlayınca +55 XP alacaksın. Giriş yapmadan ilerlersen puan yalnız bu tarayıcıda durur.

8 dk · 55 XP · 6 etkinlik

JWT hataları ve algoritma karışıklığı

JWT bir oturum jetonudur. Nokta ile ayrılmış üç bölümü vardır: başlık, gövde ve imza. İlk iki bölüm base64url ile kodlanır. Kodlama şifreleme değildir; gövdeyi herkes açıp okur.

Güvenliği imza taşır. Sunucu, başlık ile gövdeyi kendi anahtarıyla imzalar. Gelen jetonda imza tutmazsa jeton sahtedir. Mekanizma sağlamdır, hatalar uygulamada çıkar.

İmza doğrulamasının en kritik kararı, algoritmayı kimin belirlediğidir. Bazı kütüphaneler bu kararı jetonun kendi başlığındaki alg alanından okur; bu, kapıyı saldırgana teslim etmek demektir. Standart, imzasız jetonlar için none değerini tanımlar. Doğrulayıcı bu değeri kabul ederse imza kontrolü tamamen atlanır ve gövde olduğu gibi doğru sayılır. Sunucu algoritmayı kendi tarafında sabitlemezse, saldırgan başlığa none yazar ve imza bölümünü boş bırakarak sahte bir jeton üretir. Algoritma seçimi hiçbir zaman istemci verisine bırakılmaz; sunucu tek bir algoritmayı baştan kilitler.

// Zafiyetli: algoritma jetondan okunur
const alg = JSON.parse(b64(token.split(".")[0])).alg;
jwt.verify(token, ANAHTAR, { algorithms: [alg] });

// Sağlam: algoritma sunucuda sabittir
jwt.verify(token, ACIK_ANAHTAR, { algorithms: ["RS256"] });
Algoritma seçimi saldırganın verisine bırakılmaz.