Ders 1.24: JSON Web Token'ları doğrulamak
API'ler genellikle bir oturum çerezi yerine bir JSON Web Token (JWT) kabul eder: üç base64url parça; bir başlık, konu, hedef kitle ve süre sonu gibi beyanlar içeren bir yük ve bir imza. Bir JWT yalnızca sunucunun yaptığı denetimler kadar güvenilirdir. 'none' algoritmasını kabul etmek, hedef kitleyi atlamak ya da bir saatlik saat kaymasına göz yummak bir belirteci kendi yazdığın bir geçiş kartına dönüştürür. Laboratuvarda Northwind'in belirteçlerini elle çözüyor, bir HS256 imzasını openssl ile doğruluyor, bir saldırganın yönetici API'sine karşı kullandığı sahte bir belirteci parçalarına ayırıyor ve doğrulama ayarlarını düzeltiyorsun.
17 dk
Bu derste öğreneceklerin
- Bir JWT'nin yapısını açıklamak
- base64url parçalarını çözmek
- Bir HS256 imzasını doğrulamak
- alg 'none' saldırısını tanımak
- Sıkı doğrulamayı yapılandırmak: algoritmalar, yayımcı, hedef kitle, süre sonu
Temel terimler
- JWT
- Kompakt bir belirteç: base64url(başlık).base64url(yük).imza (RFC 7519).
- Beyanlar
- Yükteki ifadeler: iss, sub, aud, exp, iat ve role gibi özel olanlar.
- HS256 / RS256
- Ortak bir sırla HMAC-SHA256 / yalnızca yayımcının tuttuğu özel anahtarla RSA imzası.
- alg 'none'
- İmzasız 'güvenliksiz' bir JWT; sunucular onu kimlik doğrulama için asla kabul etmemeli.
- base64url
- + ve / yerine - ve _ kullanan, genellikle = dolgusu olmayan base64.
- Saat kayması
- exp ve nbf denetlenirken sunucular arasında farklı olan saatler için tolerans.
← Bir web uygulamasının anatomisi · Tüm dersler · Ayrıcalıklı gruplar ve iç içe üyelik →