Wagwoord-hashing in PHP
Om 'n wagwoord in oop teks te stoor - is verkeerd. 'n Kwaadwillige hacker kan toegang verkry tot jou databasis en die wagwoorde steel.
Daarom word die gebruikersnaam gewoonlik in oop
teks gestoor, en die wagwoord word gehash met 'n spesiale funksie
md5, wat die wagwoord as parameter neem
en sy hash terugstuur, waaruit
die oorspronklike wagwoord nie herstel kan word nie.
Laat ons byvoorbeeld die hash van 'n string vind:
<?php
echo md5('12345'); // sal '827ccb0eea8a706c4c34a16891f84e7b' uitdruk
?>
Nou moet ons ons registrasie en ons aanmelding herwerk. Ek sou eers aanraai om die tabel met gebruikers leeg te maak, aangesien wagwoorde daar tans in oop teks gestoor word, maar hul hashes moet gestoor word. Tydens toets van registrasie sal die tabel dan met data in die nuwe formaat gevul word.
Laat ons nou ons registrasie regstel sodat wanneer 'n nuwe gebruiker gestoor word, nie die wagwoord nie, maar sy hash by die databasis gevoeg word.
Die beskryfde regstelling sal so iets wees:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // omskep wagwoord na sy hash
$query = "INSERT INTO users SET login='$login', password='$password'";
?>
Laat ons soortgelyke veranderinge in die aanmelding aanbring:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // omskep wagwoord na sy hash
$query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
Bring veranderinge in die registrasie aan, met inagneming van hashing, registreer 'n paar nuwe gebruikers, en maak seker dat hulle by die databasis bygevoeg is met gehashde wagwoorde.
Bring veranderinge in die aanmelding aan, met inagneming van hashing, en probeer om aan te meld onder die voorheen geregistreerde gebruikers.