Подскажите пожалуйста, чем плох следующий способ аутентификации пользователей: Пользователь через форму ввода отправляет логин и пароль (POST) в скрипт аутентификации. Скрипт через POST получает логин и пароль (пароль в md5). Выполняет сравнение логина и пароля с БД (mysql), если совпадение есть, то записывает логин в сессию и перенаправляет пользователя в личный кабинет, если совпадений нет отправляет пользователя обратно на страницу ввода логина и пароля... Защита странички личного кабинета, выглядит так: Код (Text): session_start(); $login = $_SESSION['login']; if ($login == true){ #Код личного кабинета }else{ exit("<p><strong>Ошибка!</strong>Вы не можете просматривать страницы портала без аутентификации!.</p>"); }
Если у вас пользователь один или все пользователи имеют равные права, то ничем не плох. Если же это для просмотра или правки какой-то личной информации в многопользовательской системе, то нужно еще сравнивать ID.
Это авторизация, а не аутентификация. Если по канонам, то надо ещё выставить статус 403. Пользователю будет понятней если написать "у вас нет права на эту страницу" или "войдите чтобы увидеть эту страницу". ИЛИ сразу редиректить на страницу аутентификации, сохраняя адрес текущей страницы где-то (в сессии/в get-параметре) чтобы вернуться на неё.
Дьявол в деталях: PHP: $login = $_SESSION['login']; Обычно при использовании сессий основную авторизационную проверку делают так: PHP: if (isset($_SESSION['login'])) {
md5 взламывается по радужным таблицам. Сейчас в php надо использовать исключительно https://php.net/password_hash, https://php.net/password_verify