Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Generowanie soli Crypt() i szyfrowanie hasła, dobrze wykonane?

Jest kilka punktów, które można poprawić, ale najpierw polecam użyć nowej funkcji PHP hasło_hasz() . Ta funkcja wygeneruje bezpieczną sól i uwzględni ją w wynikowej wartości skrótu, dzięki czemu można ją przechowywać w jednym polu bazy danych. Istnieje również pakiet zgodności dla wcześniejszych wersji.

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

Kilka przemyśleń na temat Twojego kodu:

  1. Generujesz skrót BCrypt za pomocą crypt(), więc sól będzie częścią wynikowego skrótu. Nie ma potrzeby przechowywania go osobno.
  2. Generowanie soli można ulepszyć, użyj losowego źródła systemu operacyjnego MCRYPT_DEV_URANDOM.
  3. Jeśli zmienisz współczynnik kosztu na 9, format stanie się nieprawidłowy, ponieważ crypt oczekuje dwóch cyfr.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Entity Framework + generowanie klas MySQL

  2. Przekazywanie parametrów do przygotowanego oświadczenia JDBC

  3. Kiedy używać SQL_NO_CACHE

  4. Jak uzupełnić ciąg znakami wiodącymi/końcowymi w MySQL — LPAD(), RPAD()

  5. Jak zdefiniować niestandardowe zamówienie ORDER BY w mySQL?