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:
<?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:
<?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:
<?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'";
?>
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.
Vnesite spremembe v prijavo ob upoštevanju zgoščevanja, poskusite se prijaviti z prej registriranimi uporabniki.