Anahtar Baytlarını Karşılaştırma
Coddy'nin Node.js Journey'sinin Kimlik Doğrulama ve Güvenlik bölümünün bir parçası. Ders 5 / 24.
İki farklı Buffer nesnesi aynı baytları tutabilir. Bunları === ile karşılaştırmak, bayt içeriklerinin eşleşip eşleşmediğini değil, nesne kimliğini denetler. Gizli anahtarlar için timingSafeEqual kullan. İlk uyuşmazlıkta duran bayt bayt karşılaştırma, zamanlaması üzerinden bilgi sızdırabilir. Bu işlev sabit zamanlı bir bayt karşılaştırması kullanır; oturum açma kodunun geri kalanı da zamanlama sızıntılarını önlemelidir.
const same = token.length === savedToken.length
&& timingSafeEqual(token, savedToken);Uzunluk denetimi önemlidir; çünkü farklı uzunluklar için timingSafeEqual hata verir. && ifadesi, uzunluklar farklı olduğunda karşılaştırmayı atlar. Başlangıç kodu, verilen onaltılık dizeleri senin için Buffer nesnelerine çözümler. Bir boole sonucu döndürmeye odaklan. Tam bir parola ile oturum açma işleminde önce denenmiş anahtar türetilir, ardından bu karşılaştırma yapılır.
Görev
KolayBu küçük bir alıştırma projesidir. Kurulumu hazırdır; yalnızca exercise.js dosyasını düzenle.
Verilen ve beklenen değerler eşit baytlar içeriyorsa {"same":true}, aksi hâlde false döndür. {"given":"abcd","expected":"abcd"} değerini /result adresine POST etmek true döndürür. given değerini abce veya ab olarak değiştirmek, hata fırlatmadan false döndürür. Girdiler geçerli hex değerleridir.
Bayt uzunluklarını kontrol ettikten sonra içe aktarılan timingSafeEqual sonucunu kullan. Kodlanmış dizeleri veya Buffer kimliklerini karşılaştırmak, alıştırma konusu olan güvenli işlem değildir.
Kendin dene
import { timingSafeEqual } from 'node:crypto';
export function exercise(input) {
const given = Buffer.from(input.given, 'hex');
const expected = Buffer.from(input.expected, 'hex');
return { same: given === expected };
}
Kimlik Doğrulama ve Güvenlik bölümündeki tüm dersler
1Şifreler
Baytlar ve Onaltılık MetinParola Anahtarı TüretmeYeni Bir TuzParolaları Asla SaklamayınAnahtar Baytlarını KarşılaştırmaParolayı DoğrulamaKayıt KurallarıKendi başına pratik yap: Express playground