Hashovanie hesla v PHP

Ukladať heslo v otvorenej forme - je nesprávne. Hacker-zlomyseľník môže získať prístup k vašej databáze a ukradnúť heslá.

Preto sa zvyčajne login ukladá v otvorenej forme, a heslo sa hashuje špeciálnou funkciou md5, ktorá ako parameter prijíma heslo, a vracia jeho hash, podľa ktorého nie je možné obnoviť toto samotné heslo.

Nájdime napríklad hash nejakého reťazca:

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

Teraz je potrebné, aby sme upravili našu registráciu a našu autorizáciu. Na začiatok by som odporúčal vyčistiť tabuľku s používateľmi, pretože tam momentálne sú uložené heslá v otvorenej forme, a mali by byť uložené ich hashe. Potom pri testovaní registrácie sa tabuľka naplní údajmi v novom formáte.

Upravme teraz našu registráciu tak, aby pri ukladaní nového používateľa do databázy sa pridalo nie heslo, ale jeho hash.

Opísaná úprava bude vyzerať asi nejak takto:

html<?php
  $login = $_POST['login'];
  $password = md5($_POST['password']); // pretransformujeme heslo na jeho hash
  
  $query = "INSERT INTO users SET login='$login', password='$password'";
?>

Vykonajme podobné úpravy v autorizácii:

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

Vykonajte zmeny v registrácii s ohľadom na hashovanie, zaregistrujte niekoľko nových používateľov, presvedčte sa, že do databázy sa pridali s hashovanými heslami.

Задание 2

Vykonajte zmeny v autorizácii s ohľadom na hashovanie, skúste sa autorizovať pod predtým zaregistrovanými používateľmi.