PHP-те парольді хештеу
Парольді ашық түрде сақтау - дұрыс емес. Хакер-бұзақы сіздің дерекқорыңызға қол жеткізіп, парольдерді ұрлап алуы мүмкін.
Сондықтан әдетте логин ашық түрде сақталады,
ал пароль md5 арнайы функциясы арқылы хештеледі,
бұл функция параметр ретінде парольді қабылдап,
сол парольді қалпына келтіру мүмкін емес хеш қайтарады.
Мысалы, кез келген жолдың хешін табайық:
<?php
echo md5('12345'); // шығарады '827ccb0eea8a706c4c34a16891f84e7b'
?>
Енді біздің тіркеуімізді және авторизациямызды қайта жасау керек. Алдымен пайдаланушылар кестесін тазалағым келеді, себебі онда қазір парольдер ашық түрде сақтаулы, ал олардың хештері сақталуы керек. Содан кейін тіркеуді сынау кезінде кесте жаңа форматтағы деректермен толтырылады.
Енді тіркеуімізді түзетейік, жаңа пайдаланушыны дерекқорға сақтаған кезде пароль емес, оның хеші қосылсын.
Сипатталған түзету шамамен мынадай болады:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // парольді оның хешіне түрлендіреміз
$query = "INSERT INTO users SET login='$login', password='$password'";
?>
Авторизацияға да ұқсас түзетулер енгізейік:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // парольді оның хешіне түрлендіреміз
$query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
Тіркеуді хештеуді ескере отырып өзгертіңіз, бірнеше жаңа пайдаланушыны тіркеңіз, олардың дерекқорға хештелген парольдермен қосылғанына көз жеткізіңіз.
Авторизацияны хештеуді ескере отырып өзгертіңіз, бұрын тіркелген пайдаланушылар атынан кіруге тырысыңыз.