sql >> Database >  >> RDS >> Mysql

Crypt() saltgeneratie en wachtwoordcodering, goed uitgevoerd?

Er zijn enkele punten die kunnen worden verbeterd, maar eerst zou ik aanraden om de nieuwe functie van PHP te gebruiken password_hash() . Deze functie genereert een veilige salt en neemt deze op in de resulterende hash-waarde, zodat u deze in een enkel databaseveld kunt opslaan. Er bestaat ook een compatibiliteitspakket voor eerdere versies.

// 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);

Enkele gedachten over uw code:

  1. Je genereert een BCrypt-hash met crypt(), dus het zout maakt deel uit van de resulterende hash. Het is niet nodig om het apart op te slaan.
  2. Het genereren van het zout kan worden verbeterd, gebruik de willekeurige bron van het besturingssysteem MCRYPT_DEV_URANDOM.
  3. Als je de kostenfactor zou veranderen in 9, zou het formaat ongeldig worden, omdat crypt twee cijfers verwacht.



  1. MariaDB-replicatie implementeren voor hoge beschikbaarheid

  2. SQL SELECT AVG

  3. Queryresultaten exporteren naar een CSV-bestand in SQL Developer (Oracle)

  4. hoe tabelovererving in GreenDao te implementeren