Хеширање лозинке у PHP-у
Чувати лозинку у отвореном облику - није исправно. Хакер-злонамерник може да добије приступ вашој бази података и украде лозинке.
Зато се обично корисничко име чува у отвореном
облику, а лозинка се хешира специјалном функцијом
md5, која параметром прима
лозинку, а враћа њен хеш, по коме
није могуће вратити ову исту лозинку.
Хајде, на пример, да нађемо хеш неке ниске:
<?php
echo md5('12345'); // исписаће '827ccb0eea8a706c4c34a16891f84e7b'
?>
Сада је потребно да прерадимо нашу регистрацију и нашу ауторизацију. За почетак бих саветовао да очистите табелу са корисницима, јер се тамо тренутно чувају лозинке у отвореном облику, а треба да се чувају њихови хешеви. Затим ће се при тестирању регистрације табела попунити подацима у новом формату.
Хајде сада да исправимо нашу регистрацију тако да при чувању новог корисника у базу додајемо не лозинку, већ њен хеш.
Описана исправка ће представљати нешто овакво:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // претварамо лозинку у њен хеш
$query = "INSERT INTO users SET login='$login', password='$password'";
?>
Унесемо сличне исправке у ауторизацију:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // претварамо лозинку у њен хеш
$query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
Унесите измене у регистрацију узимајући у обзир хеширање, региструјте пар нових корисника, уверите се да су се у базу података додали са хешираним лозинкама.
Унесите измене у ауторизацију узимајући у обзир хеширање, покушајте да се ауторизујете под раније регистрованим корисницима.