Oh, Signore.
Guarda, Mr.coder. Nessuna mancanza di rispetto, ma se quel codice è destinato all'ambiente di produzione, chiedi a qualcun altro di farlo. So che tutti dobbiamo iniziare da qualche parte, ma non è qui che dovrebbe iniziare il codice di sicurezza di produzione. Detto questo, risolviamo la tua domanda.
Prima di tutto, stai usando hash_pbkdf2
, che è una funzione di PHP 5.5. Poiché stai già programmando la programmazione per PHP 5.5, è meglio utilizzare l'API password_hash
. Hai solo bisogno di due input per password_hash
; la password e l'algoritmo ( PASSWORD_BCRYPT
è raccomandato). L'output è una stringa contenente tutto ciò di cui hai bisogno (il sale generato automaticamente, la password, l'algoritmo e le iterazioni). Prendi quella stringa e la memorizzi nel database.
In secondo luogo, stai usando una iterazione. Qual e il punto? Si desidera rendere il processo il più lento possibile, mantenendolo il più possibile utilizzabile. Un'iterazione estremamente bassa. Inizia con 1000 come minimo.
Terzo, cos'è il sale gigantesco? Qualunque cosa superiore a 128 bit (16 byte) non è necessaria.
Per la verifica (login), è necessario un solo metodo; password_verify
. Fornisci la stringa hash (dal database) e la password. L'output è o true
per la verifica riuscita o false
per la verifica non riuscita. Ecco un esempio:
//Register
$hashString_ToTheDB = password_hash($userPass, PASSWORD_BCRYPT);
//Login
$isCorrectPassword = password_verify($userPass, $hashString_FromTheDB);