⊗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ščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј