Hashovanje lozinke u PHP-u
Čuvati lozinku u otvorenom obliku - nije ispravno. Haker-napadač može da dobije pristup vašoj bazi podataka i ukrade lozinke.
Stoga se obično korisničko ime čuva u otvorenom
obliku, a lozinka se hashuje specijalnom funkcijom
md5, koja kao parametar prima
lozinku, a vraća njen heš, po kome
se ne može vratiti na samu lozinku.
Hajde da, na primer, nađemo heš neke niske:
<?php
echo md5('12345'); // ispisuje '827ccb0eea8a706c4c34a16891f84e7b'
?>
Sada nam je neophodno da prepravimo našu registraciju i našu autorizaciju. Za početak bih savetovao da se očisti tabela sa korisnicima, jer se tamo trenutno čuvaju lozinke u otvorenom obliku, a trebalo bi da se čuvaju njihovi heševi. Zatim će se prilikom testiranja registracije tabela popuniti podacima u novom formatu.
Hajde sada da ispravimo našu registraciju tako da se prilikom čuvanja novog korisnika u bazu dodaje ne lozinka, već njen heš.
Opisana ispravka će predstavljati nešto ovako:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // transformišemo lozinku u njen heš
$query = "INSERT INTO users SET login='$login', password='$password'";
?>
Unesimo slične ispravke u autorizaciju:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // transformišemo lozinku u njen heš
$query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
Unesite izmene u registraciju uzimajući u obzir hashovanje, registrujte par novih korisnika, uverite se da su se u bazu podataka dodali sa heširanim lozinkama.
Unesite izmene u autorizaciju uzimajući u obzir hashovanje, pokušajte da se autorizujete pod prethodno registrovanim korisnicima.