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:

html<?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:

html<?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:

html<?php
  $login = $_POST['login'];
  $password = md5($_POST['password']); // transformišemo lozinku u njen heš
    
  $query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
Задание 1

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.

Задание 2

Unesite izmene u autorizaciju uzimajući u obzir hashovanje, pokušajte da se autorizujete pod prethodno registrovanim korisnicima.