Guida Password Bcrypt

Stato
Discussione chiusa ad ulteriori risposte.

Jackss

Utente Bronze
28 Dicembre 2013
31
6
6
48
Password Bcrypt
Wikipedia ha detto:
bcrypt è una funzione di hashing di password progettata da Niels Provos e David Mazières, basata sulla cifratura Blowfish e presentata a USENIX nel 1999. Oltre a incorporare un sale per proteggere la password contro attacchi tabella arcobaleno, bcrypt è una funzione adattiva: col tempo, il conteggio dell'iterazione può essere aumentato per renderla più lenta, in modo da essere resistente ad attacchi di forza bruta anche con capacità computazionale crescente.

Come ben molti di voi saprete, le funzioni per l'hashing delle password MD5, SHA256 ed altre similiari non sono più del tutto sicure.
Ora come ora è molto consigliato usare il Bcrypt per l'hashing delle password che favorisce una maggiore sicurezza, basteranno delle semplicissime funzioni php per permettere ciò... andiamole a vedere insieme!

PNYHA.png



password_hash()
La funzione di cui andremo a parlare è "password_hash()", essa ci servirà per creare l'hashing della password, con la possibilità di usare ben due algoritmi di hashing.
PASSWORD_DEFAULT: Questo algoritmo utilizza il bcrypt ma a differenza del prossimo che vi andrò ad illustrare la sua costante cambierà nel tempo.
Per tanto è consigliato memorizzare il risultato in una colonna del database maggiore di 60 caratteri (255 per sicurezza), dato che la lunghezza nel tempo può variare.

PASSWORD_BCRYPT: Utilizza l'algoritmo CRYPT_BLOWFISH per creare l'hash, il risultato dell'hashing sarà sempre 60 caratteri o FALSE in caso di fallimento.

PHP:
$password = "passwordhashing";
password_hash($password,PASSWORD_BCRYPT, ['cost' => 5]);

Questo è come deve essere utilizzata la funzione, nel primo parametro gli passeremo la variabile dove è salvata la password (nel mio caso $password), nel secondo gli diamo l'algoritmo che vogliamo usare (nel mio caso PASSWORD_BCRYPT), nel terzo andremo a inserirgli un cost che determina il costo algoritmico da utilizzare (nel mio caso 5) e il suo valore massimo è 12.



password_verify()
La funzione "password_verify()" ci servirà per verificare se la password che andremo ad inserire in un input (es. login) corrisponde all'hash che abbiamo creato tramite il bcrypt in precedenza.

PHP:
$password_input = "passwordhashing";
$hash = "$2a$05$9IJ55kNoYRH8hroEs5vmieFeg/UpOr8GaZoHhz1MuR0MJdZluDs8i";
password_verify($password_input,$hash);

In questa semplice funzione gli abbiamo passato due parametri, $password_input ovvero la password che l'utente andrà ad inserire in input (nel mio caso passwordhashing), $hash che corrisponde alla password che abbiamo hashato in precedenza con password_hash().
La seguente funzione restituirà TRUE se la password corrisponde all'hash e FALSE se la password non corrisponde.


Guida creata per intero da me, non copiate senza permesso.
 
  • Mi piace
Reazioni: alcatrak e Kolo93
Stato
Discussione chiusa ad ulteriori risposte.