sql >> Databáze >  >> RDS >> Mysql

Generování soli Crypt() a šifrování hesel, dobře provedené?

Existuje několik bodů, které lze zlepšit, ale nejprve bych doporučil použít novou funkci PHP password_hash() . Tato funkce vygeneruje bezpečnou sůl a zahrne ji do výsledné hodnoty hash, takže ji můžete uložit do jednoho databázového pole. Existuje také balíček kompatibility pro starší verze.

// Hash a new password for storing in the database.
// The function automatically generates a cryptographically safe salt.
$hashToStoreInDb = password_hash($password, PASSWORD_BCRYPT);

// Check if the hash of the entered login password, matches the stored hash.
// The salt and the cost factor will be extracted from $existingHashFromDb.
$isPasswordCorrect = password_verify($password, $existingHashFromDb);

Pár úvah o vašem kódu:

  1. Vygenerujete hash BCrypt pomocí crypt(), takže sůl bude součástí výsledného hashe. Není potřeba jej skladovat samostatně.
  2. Generování soli lze zlepšit, použijte náhodný zdroj operačního systému MCRYPT_DEV_URANDOM.
  3. Pokud byste změnili nákladový faktor na 9, formát by se stal neplatným, protože crypt očekává dvě číslice.



  1. Je to v detailech

  2. oci_bind_by_name a to_date PHP/OCI/Oracle

  3. VLDB ve věku 20 let:Budete potřebovat větší…

  4. MySQL:Neplatné použití skupinové funkce