Parola saklama: bcrypt, scrypt veya Argon2 ile hash'le

Düz metin parolalardan oluşan bir veritabanı, insanlar parolalarını tekrar kullandığı için başka sitelerin giriş bilgilerinin listesidir. Tabloyu okuyan kişi — bir yedek, bir injection veya bir içeriden kişi aracılığıyla — hepsini alır.

Örnek

Zafiyetli
this.addUser = (userName, password, callback) => {
  users.insertOne({ userName, password }, callback);
};
Güvenli
const bcrypt = require("bcrypt");

this.addUser = async (userName, password) => {
  const hash = await bcrypt.hash(password, 12);
  return users.insertOne({ userName, password: hash });
};
// at login: await bcrypt.compare(attempt, user.password)

Nasıl ters gider

Doğrudan users tablosuna yazılan parolalar bariz durumdur. Hızlı hash'ler ise ince olanıdır: MD5, SHA-1 ve düz SHA-256 bir GPU'da saniyede milyarlarca kez hesaplanabilir; sızan bir tablo günler içinde kırılır. Tuzsuz hash'ler ayrıca önceden hesaplanmış tek bir tablonun tüm kullanıcıları kapsamasına izin verir.

Nasıl düzeltilir

Yavaş, tuzlu bir parola hash'i ve kütüphanenin doğrulama fonksiyonunu kullan.

  • bcrypt (maliyet 12 veya üzeri), scrypt veya Argon2id
  • String karşılaştırarak değil, kütüphanenin sabit zamanlı karşılaştırmasıyla doğrula
  • Maliyeti artırdığında girişte yeniden hash'le
  • Giriş denemelerini sınırla ve kullanıcı adının var olup olmadığını belli etme

RepoVerse bunu nasıl bulur

  • YüksekParola hash'lenmeden saklanıyor

    Veritabanını okuyabilen herkes — bir yedek, bir injection, bir içeriden kişi — tüm kullanıcıların parolalarını, onlarla da diğer sitelerdeki hesaplarını ele geçirir.

    veri akışı · CWE-256

  • OrtaParola veya token kırılmış bir özetle hash'lenmiş

    MD5 ve SHA-1 hızlıdır ve çakışmaya açıktır; bir secret için tam olarak yanlış olan şey budur — sıradan bir GPU çalınmış tabloyu gezer.

    örüntü

Sorular

Tuzlu SHA-256 parolalar için yeterli mi?
Hayır. Tuz önceden hesaplanmış tabloları durdurur ama SHA-256 hızlı olacak şekilde tasarlanmıştır; parola kıran bir saldırganın istediği de budur. Parola hash'leri bilerek yavaş ve ayarlanabilirdir.
RepoVerse düz metin parolaları nasıl tespit ediyor?
Yakınında hiçbir hash çağrısı ve modelde kaydetme öncesi hash'leme kancası olmadan insert, save veya create çağrılarıyla veritabanına yazılan parola alanlarını arar.

İlgili

Güncellendi 2026-10-11