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

Jak tworzyć i przechowywać hasła md5 w mysql

Edytuj 2017/11/09:Koniecznie zapoznaj się z odpowiedzią O Jonesa.

Po pierwsze MD5 nie jest najlepszą metodą haszowania, której możesz użyć do tego celu sha256 lub sha512

To powiedziawszy, użyjmy hash('sha256') zamiast md5() do reprezentowania haszującej części procesu.

Kiedy po raz pierwszy utworzysz nazwę użytkownika i hasło, zahasz surowe hasło z odrobiną soli (do każdego hasła dodawane są losowe dodatkowe znaki, aby były dłuższe/silniejsze).

Może wyglądać mniej więcej tak w formularzu tworzenia użytkownika:

$escapedName = mysql_real_escape_string($_POST['name']); # use whatever escaping function your db requires this is very important.
$escapedPW = mysql_real_escape_string($_POST['password']);

# generate a random salt to use for this account
$salt = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));

$saltedPW =  $escapedPW . $salt;

$hashedPW = hash('sha256', $saltedPW);

$query = "insert into user (name, password, salt) values ('$escapedName', '$hashedPW', '$salt'); ";

Wtedy po zalogowaniu będzie wyglądać mniej więcej tak:

$escapedName = mysql_real_escape_string($_POST['name']);
$escapedPW = mysql_real_escape_string($_POST['password']);

$saltQuery = "select salt from user where name = '$escapedName';";
$result = mysql_query($saltQuery);
# you'll want some error handling in production code :)
# see http://php.net/manual/en/function.mysql-query.php Example #2 for the general error handling template
$row = mysql_fetch_assoc($result);
$salt = $row['salt'];

$saltedPW =  $escapedPW . $salt;

$hashedPW = hash('sha256', $saltedPW);

$query = "select * from user where name = '$escapedName' and password = '$hashedPW'; ";

# if nonzero query return then successful login


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wybrać dwie kolumny jako jedną?

  2. Wyzwalacz Mysql do aktualizacji wstawionego wiersza

  3. Właściwy model bazy danych dla systemu informacji zwrotnej od użytkowników (ciekawy przypadek)

  4. Używanie etykiety w klauzuli posiadającej w sqlachemy

  5. Zarządzanie kontami użytkowników, role, uprawnienia, uwierzytelnianie PHP i MySQL - Część 4