Jestem w trakcie pisania funkcji logowania i weryfikacji czy ktoś jest zalogowany.
Czy możecie pomóc mi określić bezpieczeństwo mojego systemu?
LOGOWANIE - przed wprowadzeniem danych do funkcji login wcześniej weryfikuje dane wprowadzone przez klienta
function login($login, $pass) { $login = mysqli_real_escape_string($mysqli, $login); //sprawdzamy czy istnieje login $query = "SELECT * FROM `rds_admin` WHERE `login` ='". $login ."'"; $result = mysqli_query($mysqli, $query); $cnt = mysqli_num_rows($result); //jezeli brak wynikow zwracamy FALSE if ($cnt == 0) { return false; } else { //sprawdzamy czy haslo zgadza się z tym zapisanym w mysql $row = mysqli_fetch_array($result, MYSQLI_ASSOC); if ($row['password'] == $pass) { //tworzymy hash który będzie zapisany w sesji $options = [ 'cost' => 12, ]; $hash = password_hash($pass, PASSWORD_BCRYPT, $options); $_SESSION["lo"] = $login; $_SESSION["lh"] = $hash; return true; } else { return false; } }}
WERYFIKACJA - zwraca true lub false w zależności czy ktoś jest zalogowany
//sprawdzanie czy ktoś jest zalogowany, zwraca TRUE w przypadku kiedy wszystko się zgadza i FALSE w przypadku kiedy nie function auth () { $login = $_SESSION['lo']; $hash = $_SESSION['lh']; $login = mysqli_real_escape_string($mysqli, $login); return false; } else { //pobieranie danych z mysql $query = "SELECT * FROM `rds_admin` WHERE `login` ='". $login ."'"; $result = mysqli_query($mysqli, $query); $cnt = mysqli_num_rows($result); if ($cnt == 0) { return false; } else { $row = mysqli_fetch_array($result, MYSQLI_ASSOC); if (password_verify($row['password'], $hash)) { return true; } else { return false; } } }}
WYLOGOWANIE
function logout() { }
Na stronie pliki które chcemy ukryć dla niezalogowanych na górze wówczas dajemy komendę:
if (!(auth())) { exit; }