Mysql
 sql >> Database >  >> RDS >> Mysql

Crittografare la password prima di archiviarla nel database?

Sebbene la risposta di seguito sia tecnicamente ancora corretta, php ha nuovi consigli per quanto riguarda gli algoritmi di hashing da utilizzare. Il loro consiglio , a partire da php> =5.5.0, è utilizzare il password_hash e password_verify funzioni per eseguire l'hashing e verificare le password con hash. Come ulteriore vantaggio, queste funzioni includono automaticamente un salt personalizzato come parte dell'hash restituito, quindi non devi preoccuparti di questo in modo esplicito.

Se non ti interessa recuperare il valore effettivo della password (dal valore crittografato del database), puoi eseguire un algoritmo hash unidirezionale su di esso (come sha1). Questa funzione restituirà una stringa di lunghezza specifica (hash) che non può essere utilizzata per trovare la stringa originale (in teoria). È possibile che due stringhe diverse possano creare lo stesso hash (chiamato collisione), ma questo non dovrebbe essere un problema con le password.
Esempio: $pass = sha1($_REQUEST['pass']);

Una cosa, per renderlo un po' più sicuro è aggiungere un sale all'hash ed eseguire nuovamente la funzione hash. Ciò rende più difficile generare un hash di password in modo dannoso poiché il valore salt viene gestito solo lato server.
Esempio: $pass = sha1(sha1($_REQUEST['pass']).sha1("[email protected]$#(%"));