Non si deve immettere il proprio sale, lasciare il sale vuoto, la funzione genererà un buon sale casuale.
Inserire nel database (o file o qualsiasi altra cosa si usi) tutta la stringa restituita dalla funzione. contiene: id di algoritmo, costo, sale (22 caratteri) e password hash.
L'intera stringa è necessaria per utilizzare password_verify(). Il sale è casuale e non fa male a cadere nelle mani sbagliate (con password hash). Questo impedisce (o molto difficile) di usare set pronti generati liste di password e hash - tabelle arcobaleno.
È necessario considerare il parametro costo aggiuntivo. Predefinito (se omesso) è 10 - se superiore, funzione hash di calcolo più lungo. L'aumento del costo di 1, doppio tempo necessario per generare un hash (e quindi allungare il tempo che serve per rompere la password)
$hash = password_hash($password, PASSWORD_BCRYPT, array("cost" => 10));
si dovrebbe impostare questo parametro in base a controllo della velocità sul vostro server. Si consiglia di eseguire la funzione 100 ms + (alcuni preferiscono renderlo 250 ms). Di solito il costo = 10 o 11 è una buona scelta (nel 2015).
Per aumentare la sicurezza, è possibile aggiungere alle password una stringa segreta lunga (50-60 caratteri è una buona scelta). prima di utilizzare password_hash() o password_verify().
$secret_string = '[email protected]#[email protected]#$234';
$password = trim($_POST['user_password']) . $secret_string;
// here use password_* function
Attenzione Utilizzo del PASSWORD_BCRYPT per il parametro algo, porteranno al parametro della password troncati ad una lunghezza massima di 72 caratteri.
Se $ password sarà più lunga di 72 caratteri e si modificherà o aggiungerà l'hash di 73 o 90 caratteri non cambierà. Facoltativo, il blocco $ secret_string dovrebbe essere alla fine (dopo la password dell'utente e non prima).
Hmm, c'è qualcosa di strano qui, avete array ("costo" => 10, e nulla dopo? –
fisso, dispiace. –
Sei ancora manca a) –