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:

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

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

html<?php
  $login = $_POST['login'];
  $password = md5($_POST['password']); // konverterer passord til dens hash
    
  $query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
Задание 1

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.

Задание 2

Gjør endringer i autorisasjonen med hensyn til hashing, prøv å logge inn med tidligere registrerte brukere.