Хеширање лозинке у PHP-у

Чувати лозинку у отвореном облику - није исправно. Хакер-злонамерник може да добије приступ вашој бази података и украде лозинке.

Зато се обично корисничко име чува у отвореном облику, а лозинка се хешира специјалном функцијом md5, која параметром прима лозинку, а враћа њен хеш, по коме није могуће вратити ову исту лозинку.

Хајде, на пример, да нађемо хеш неке ниске:

html<?php
  echo md5('12345'); // исписаће '827ccb0eea8a706c4c34a16891f84e7b'
?>

Сада је потребно да прерадимо нашу регистрацију и нашу ауторизацију. За почетак бих саветовао да очистите табелу са корисницима, јер се тамо тренутно чувају лозинке у отвореном облику, а треба да се чувају њихови хешеви. Затим ће се при тестирању регистрације табела попунити подацима у новом формату.

Хајде сада да исправимо нашу регистрацију тако да при чувању новог корисника у базу додајемо не лозинку, већ њен хеш.

Описана исправка ће представљати нешто овакво:

html<?php
  $login = $_POST['login'];
  $password = md5($_POST['password']); // претварамо лозинку у њен хеш
  
  $query = "INSERT INTO users SET login='$login', password='$password'";
?>

Унесемо сличне исправке у ауторизацију:

html<?php
  $login = $_POST['login'];
  $password = md5($_POST['password']); // претварамо лозинку у њен хеш
    
  $query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
Задание 1

Унесите измене у регистрацију узимајући у обзир хеширање, региструјте пар нових корисника, уверите се да су се у базу података додали са хешираним лозинкама.

Задание 2

Унесите измене у ауторизацију узимајући у обзир хеширање, покушајте да се ауторизујете под раније регистрованим корисницима.