⊗ppPmAuAHS 425 of 447 menu

Дадаванне солі ў аўтарызацыю

Цяпер нам неабходна змяніць аўтарызацыю. Тут ужо змены будуць больш істотнымі.

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

Прыдзецца спачатку атрымаць запіс толькі па лагіну, прачытаць соль, пасаліць уведзены пароль і параўнаць з салёным паролем з базы і толькі, калі яны супадаюць, - аўтарызоўваць карыстальніка.

Улічыце, што можа такое быць, што лагін убіты няправільна, у гэтым выпадку праверку пароля можна не ажыццяўляць, а адразу вывесці, што аўтарызацыя не магчыма - даныя не верны:

<?php $login = $_POST['login']; $query = "SELECT * FROM users WHERE login='$login'"; $res = mysqli_query($link, $query); $user = mysqli_fetch_assoc($res); if (!empty($user)) { // карыстальнік з такім лагінам ёсць, цяпер трэба правяраць пароль... } else { // карыстальніка з такім лагінам няма, вывядзем паведамленне } ?>

Дадайце праверку пароля:

<?php $login = $_POST['login']; $query = "SELECT * FROM users WHERE login='$login'"; $res = mysqli_query($link, $query); $user = mysqli_fetch_assoc($res); if (!empty($user)) { $salt = $user['salt']; // соль з БД $hash = $user['password']; // салёны пароль з БД $password = md5($salt . $_POST['password']); // салёны пароль ад карыстальніка // Параўноўваем салёныя хэшы if ($password == $hash) { // усё ок, аўтарызуем... } else { // пароль не падышоў, вывядзем паведамленне } } else { // карыстальніка з такім лагінам няма, вывядзем паведамленне } ?>

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

Рэалізуйце апісаную вышэй аўтарызацыю з салёным паролем. Паспрабуйце зарэгіструйцеся, аўтарызуйцеся, упэўніцеся, што ўсё працуе.

Беларуская
AfrikaansAzərbaycanБългарскиবাংলাČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць