Paroles hešēšana PHP
Saglabāt paroli atklātā veidā ir nepareizi. Uzbrucējs-hakeris var iegūt piekļuvi jūsu datu bāzei un nozagt paroles.
Tāpēc parasti lietotājvārds tiek saglabāts atklātā
veidā, bet parole tiek hešēta ar speciālu funkciju
md5, kas parametru pieņem
paroli, un atgriež tās hešu, pēc kura
nevar atjaunot šo pašu paroli.
Piemēram, atradīsim kādas virknes hešu:
<?php
echo md5('12345'); // izvadīs '827ccb0eea8a706c4c34a16891f84e7b'
?>
Tagad mums ir jāpārveido mūsu reģistrācija un mūsu autorizācija. Iesākumā es ieteiktu iztīrīt lietotāju tabulu, jo tajā pašlaik tiek glabātas paroles atklātā veidā, bet tajā jāglabā to heši. Pēc tam, testējot reģistrāciju, tabula tiks aizpildīta ar datiem jaunajā formātā.
Tagad labosim mūsu reģistrāciju tā, lai, saglabājot jaunu lietotāju datu bāzē, tiktu pievienota ne parole, bet tās hešs.
Aprakstītā labojums izskatīsies apmēram šādi:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // pārveido paroli par tās hešu
$query = "INSERT INTO users SET login='$login', password='$password'";
?>
Ieviesīsim līdzīgus labojumus autorizācijā:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // pārveido paroli par tās hešu
$query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
Ieviesiet izmaiņas reģistrācijā, ņemot vērā hešēšanu, reģistrējiet pāris jaunus lietotājus, pārliecinieties, ka dati datu bāzē tika pievienoti ar hešētām parolēm.
Ieviesiet izmaiņas autorizācijā, ņemot vērā hešēšanu, mēģiniet autorizēties ar iepriekš reģistrētiem lietotājiem.