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:
<?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:
<?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:
<?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'";
?>
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.
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.