Passordhashing i PHP
Å lagre passord i klartekst er feil. En ondsinnet hacker kan få tilgang til databasen din og stjele passord.
Derfor lagres vanligvis brukernavn i klartekst,
mens passord hashes med en spesiell funksjon
md5, som tar passordet som parameter
og returnerer dens hash, som
ikke kan brukes til å gjenopprette selve passordet.
La oss for eksempel finne hashen til en streng:
<?php
echo md5('12345'); // vil skrive ut '827ccb0eea8a706c4c34a16891f84e7b'
?>
Nå må vi omarbeide registreringen vår og autorisasjonen vår. Til å begynne med vil jeg anbefale å tømme brukertabellen, siden den for øyeblikket lagrer passord i klartekst, mens den burde lagre deres hasher. Deretter, under testing av registrering, vil tabellen fylles med data i det nye formatet.
La oss nå justere registreringen vår så når en ny bruker lagres i databasen, legges det ikke til passord, men dens hash.
Den beskrevne endringen vil se omtrent slik ut:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // konverterer passord til dens hash
$query = "INSERT INTO users SET login='$login', password='$password'";
?>
La oss gjøre lignende endringer i autorisasjonen:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // konverterer passord til dens hash
$query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
Gjør endringer i registreringen med hensyn til hashing, registrer et par nye brukere, forsikre deg om at de ble lagt til i databasen med hashede passord.
Gjør endringer i autorisasjonen med hensyn til hashing, prøv å logge inn med tidligere registrerte brukere.