Zgoščevanje gesel v PHP

Shranjevanje gesla v odprti obliki ni pravilno. Hecker-napadalec lahko dostopa do vaše podatkovne baze in ukrade gesla.

Zato se običajno uporabniško ime shrani v odprti obliki, geslo pa se zgošči s posebno funkcijo md5, ki kot parameter sprejme geslo in vrne njegov zgoščeno vrednost, po kateri ni mogoče obnoviti tega gesla.

Poiščimo na primer zgoščeno vrednost nekega niza:

html<?php
  echo md5('12345'); // izpiše '827ccb0eea8a706c4c34a16891f84e7b'
?>

Zdaj moramo predelati našo registracijo in našo prijavo. Za začetek bi svetoval izprazniti tabelo z uporabniki, saj se tam trenutno shranjujejo gesla v odprti obliki, morali bi pa biti shranjeni njihovi zgoščeni vrednosti. Nato se bo med testiranjem registracije tabela napolnila s podatki v novi obliki.

Popravimo zdaj našo registracijo tako, da se ob shranjevanju novega uporabnika v bazo doda ne geslo, temveč njegova zgoščena vrednost.

Opisana popravka bo predstavljala najbrž nekaj takega:

html<?php
  $login = $_POST['login'];
  $password = md5($_POST['password']); // pretvorimo geslo v njegovo zgoščeno vrednost
  
  $query = "INSERT INTO users SET login='$login', password='$password'";
?>

Vnesimo podobne popravke v prijavo:

html<?php
  $login = $_POST['login'];
  $password = md5($_POST['password']); // pretvorimo geslo v njegovo zgoščeno vrednost
    
  $query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
Задание 1

Vnesite spremembe v registracijo ob upoštevanju zgoščevanja, registrirajte nekaj novih uporabnikov, prepričajte se, da so se v podatkovno bazo dodali z zgoščenimi gesli.

Задание 2

Vnesite spremembe v prijavo ob upoštevanju zgoščevanja, poskusite se prijaviti z prej registriranimi uporabniki.