⊗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
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне