Хешаванне пароля на PHP

Захоўваць пароль у адкрытым выглядзе - няправільна. Хакер-зламыснік можа атрымаць доступ да вашай базы дадзеных і скрасці паролі.

Таму звычайна лагін захоўваецца ў адкрытым выглядзе, а пароль хешуецца спецыяльнай функцыяй md5, якая параметрам прымае пароль, а вяртае яго хеш, па якому нельга аднавіць гэты самы пароль.

Давайце, напрыклад, знойдзем хеш якой-небудзь радкі:

html<?php
  echo md5('12345'); // выведзець '827ccb0eea8a706c4c34a16891f84e7b'
?>

Цяпер нам неабходна перарабіць нашу рэгістрацыю і нашу аўтарызацыю. Для пачатку я б раіў ачысціць табліцу з карыстальнікамі, так як там зараз захоўваюцца паролі ў адкрытым выглядзе, а павінны захоўвацца іх хешы. Затым пры тэставанні рэгістрацыі табліца запаўніцца дадзенымі ў новым фармаце.

Давайце цяпер паправім нашу рэгістрацыю так, каб пры захаванні новага карыстальніка ў базу дадаваўся не пароль, а яго хеш.

Апісаная праўка будзе прадстаўляць сабой нешта такое:

html<?php
  $login = $_POST['login'];
  $password = md5($_POST['password']); // пераўтвараем пароль у яго хеш
  
  $query = "INSERT INTO users SET login='$login', password='$password'";
?>

Унясём аналагічныя праўкі ў аўтарызацыю:

html<?php
  $login = $_POST['login'];
  $password = md5($_POST['password']); // пераўтвараем пароль у яго хеш
    
  $query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
Задание 1

Унясіце змены ў рэгістрацыю з улікам хешавання, зарэгіструйце пару новых карыстальнікаў, упэўніцеся, што ў базу дадзеных яны дадаліся з хешаванымі паролямі.

Задание 2

Унясіце змены ў аўтарызацыю з улікам хешавання, паспрабуйце аўтарызавацца пад зарэгістраванымі раней карыстальнікамі.