Jelszó hashelés PHP-ben

A jelszó nyílt formában történő tárolása helytelen. Egy hacker-támadó hozzáférhet az adatbázisához és ellophatja a jelszavakat.

Ezért általában a felhasználónév nyílt formában van tárolva, a jelszót pedig egy speciális függvénnyel md5 hashelik, amely paraméterként fogadja a jelszót, és visszaadja annak hashét, amelyből nem lehet visszaállítani magát a jelszót.

Keressük meg például egy tetszőleges karakterlánc hashét:

html<?php
  echo md5('12345'); // kiírja '827ccb0eea8a706c4c34a16891f84e7b'
?>

Most át kell alakítanunk a regisztrációnkat és a bejelentkezésünket. Először is azt javaslom, hogy ürítse ki a felhasználók táblázatát, mivel jelenleg a jelszavak nyílt formában vannak tárolva, pedig a hashüket kellene tárolni. Ezután a regisztráció tesztelése során a tábla az új formátumban töltődik fel adatokkal.

Most módosítsuk a regisztrációnkat úgy, hogy amikor egy új felhasználót mentünk az adatbázisba, ne a jelszó, hanem annak hash-e kerüljön hozzáadásra.

Az említett módosítás valami ilyesmi lesz:

html<?php
  $login = $_POST['login'];
  $password = md5($_POST['password']); // átalakítjuk a jelszót a hashévé
  
  $query = "INSERT INTO users SET login='$login', password='$password'";
?>

Végezzük el a hasonló módosításokat a bejelentkezésben is:

html<?php
  $login = $_POST['login'];
  $password = md5($_POST['password']); // átalakítjuk a jelszót a hashévé
    
  $query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
Задание 1

Végezze el a módosításokat a regisztrációban a hashelés figyelembevételével, regisztráljon pár új felhasználót, és győződjön meg róla, hogy az adatbázisba a jelszavak hashével lettek hozzáadva.

Задание 2

Végezze el a módosításokat a bejelentkezésben a hashelés figyelembevételével, és próbáljon meg bejelentkezni a korábban regisztrált felhasználókkal.