Slaptažodžių maišymas PHP
Laikyti slaptažodį atvira forma – neteisinga. Įsilaužėlis piktadaris gali gauti prieigą prie jūsų duomenų bazės ir pavogti slaptažodžius.
Todėl paprastai prisijungimo vardas saugomas atvira
forma, o slaptažodis yra maišomas specialia funkcija
md5, kuri parametru priima
slaptažodį, o grąžina jo maišą, pagal kurį
negalima atkurti paties slaptažodžio.
Pavyzdžiui, suraskime kokios nors eilutės maišą:
<?php
echo md5('12345'); // išvests '827ccb0eea8a706c4c34a16891f84e7b'
?>
Dabar mums reikia perdaryti savo registraciją ir savo autorizaciją. Pirmiausia patarčiau išvalyti vartotojų lentelę, nes joje dabar saugomi slaptažodžiai atvira forma, o turi būti saugomi jų maišai. Toliau, testuojant registraciją, lentelė bus užpildyta duomenimis nauju formatu.
Dabar pataisykime savo registraciją taip, kad išsaugant naują vartotoją į duomenų bazę būtų pridedamas ne slaptažodis, o jo maišas.
Aprašytas pataisymas atrodys maždaug taip:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // paverčiame slaptažodį į jo maišą
$query = "INSERT INTO users SET login='$login', password='$password'";
?>
Atlikime panašius pataisymus autorizacijoje:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // paverčiame slaptažodį į jo maišą
$query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
Atlikite pakeitimus registracijoje atsižvelgdami į maišymą, užsiregistruokite porą naujų vartotojų, įsitikinkite, kad į duomenų bazę jie buvo pridėti su sumaišytais slaptažodžiais.
Atlikite pakeitimus autorizacijoje atsižvelgdami į maišymą, pabandykite prisijungi su anksčiau užsiregistravusiais vartotojais.