Hashimi i fjalëkalimit në PHP
Është e gabuar të ruash fjalëkalimin në formë të hapur. Nje haker-i me qëllim të keq mund të marrë qasje në bazën tuaj të të dhënave dhe të vjedhë fjalëkalimet.
Prandaj, zakonisht identifikuesi i përdoruesit ruhet në formë
të hapur, ndërsa fjalëkalimi hashet me një funksion të veçantë
md5, i cili si parametër merr
fjalëkalimin dhe kthen hash-in e tij, me të cilin
është e pamundur të rikthehet ky fjalëkalim.
Le të gjejmë, për shembull, hash-in e një vargu të caktuar:
<?php
echo md5('12345'); // do të shfaqet '827ccb0eea8a706c4c34a16891f84e7b'
?>
Tani na duhet të rishkruajmë regjistrimin tonë dhe hyrjen në sistem. Për fillim, do të kisha këshilluar të pastroni tabelën me përdorues, pasi atje aktualisht ruhen fjalëkalimet në formë të hapur, kurse duhet të ruhen hash-et e tyre. Më pas, gjatë testimit të regjistrimit, tabela do të mbushet me të dhëna në formatin e ri.
Tani le të korrigjojmë regjistrimin tonë në mënyrë që gjatë ruajtjes së një përdoruesi të ri në bazë, të shtohet jo fjalëkalimi, por hash-i i tij.
Korrigjimi i përshkruar do të duket diçka si kjo:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // e kthejmë fjalëkalimin në hash-in e tij
$query = "INSERT INTO users SET login='$login', password='$password'";
?>
Të bëjmë ndryshime të ngjashme në hyrjen në sistem:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // e kthejmë fjalëkalimin në hash-in e tij
$query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
Bëni ndryshimet në regjistrim duke marrë parasysh hashimin, regjistroni disa përdorues të rinj, u bëni të sigurtë që në bazën e të dhënave ata u shtuan me fjalëkalime të hash-uar.
Bëni ndryshimet në hyrjen në sistem duke marrë parasysh hashimin, provoni të hyni në sistem me përdoruesit e regjistruar më parë.