⊗ppPmAuRHS 424 of 447 menu

Aggiunta del salt alla registrazione

Dunque, sai già che l'hash tramite md5 è un processo irreversibile e un hacker, che ottiene l'hash, non potrà ricavare la password da questo hash.

In realtà questa affermazione non è del tutto vera - attualmente hacker malintenzionati hanno creato librerie di hash di password popolari e non e qualsiasi sciocco può decifrare la password, semplicemente cercando il suo hash su Google.

Si tratta di password abbastanza semplici e popolari.

Cerca su Google, ad esempio, l'hash 827ccb0eea8a706c4c34a16891f84e7b e vedrai immediatamente nei risultati di Google, che è la password '12345'.

Gli hash di password abbastanza complesse non possono essere decifrati in questo modo (provalo).

Potresti chiederti, qual è il problema allora - facciamo sì che tutti ci registriamo con password complesse. C'è, tuttavia, un problema - la maggior parte degli utenti non pensa alla sicurezza dei propri dati e potrebbe inserire password abbastanza semplici.

Possiamo obbligare a creare password più lunghe durante la registrazione, limitando, ad esempio, il numero minimo di caratteri a 6 o 8, tuttavia, continueranno ad apparire password come '123456' o '12345678'.

Si potrebbe, certamente, ideare un algoritmo più intelligente per verificare la complessità della password, ma c'è un'altra soluzione.

L'essenza di questa soluzione è questa: le password devono essere salenate. Il salt (sale) è una stringa casuale speciale, che verrà aggiunta alla password durante la registrazione e l'hash sarà calcolato non dalla semplice password, ma dalla stringa salt+password, cioè dalla password salata.

Cioè durante la registrazione farai qualcosa del genere:

<?php $salt = '1sJg3hfdf'; // salt - stringa casuale complessa $password = md5($salt . $_POST['password']); // convertiamo la password in un hash salato ?>

In questo caso il salt sarà diverso per ogni utente, deve essere generato in modo casuale al momento della registrazione.

Ecco una funzione pronta che lo farà:

<?php function generateSalt() { $salt = ''; $saltLength = 8; // lunghezza del salt for($i = 0; $i < $saltLength; $i++) { $salt .= chr(mt_rand(33, 126)); // carattere dalla ASCII-table } return $salt; } ?>

Con questa funzione puoi riscrivere il nostro codice in questo modo:

<?php $salt = generateSalt(); // salt $password = md5($salt . $_POST['password']); // password salata ?>

Lo ripeto ancora, questi erano cambiamenti durante la registrazione - nel database salviamo non semplicemente l'hash della password, ma l'hash della password salata.

Non è tutto: nella tabella degli utenti oltre ai campi login e password è necessario avere anche un campo salt, in cui conserveremo il salt di ogni utente.

Implementate la registrazione descritta sopra con la password salata.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta