Задать вопрос

Безопасен ли такой способ авторизации на сайте?

Здравствуйте! В голове набросал алгоритм авторизации на сайте
1. В БД MySQL хранится логин пользователя и MD5 хеш его пароля
2. В скрипте login.php пользователь вводить логин и пароль, при нажатии кнопки "Отправить" форма отправляется на сервер методом POST.
3. Затем, в скрипте вычисляется значение хэша MD5 для строки, которую мы передали на втором этапе
4. Скрипт подключается к БД, находит хэш пароля нужного пользователя, записывает хэш в переменную, затем сравниваются хэш введённого в форме пароля, и хэш пароля из БД.
5. Если хэши совпадают - в сессии появляется новая переменная $authorized = 1
На "секретной" странице стоит проверка - если $authorized = 1,то отобразить страницу, в противном случае - переадресация на страницу с авторизацией.
  • Вопрос задан
  • 199 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
Hakkunamatata
@Hakkunamatata
Зефирный-человек
1. password_hash()
3-4. password_verify()
6. Md5 для хэширования паролей - прохладная история
Ответ написан
Комментировать
alsopub
@alsopub
Норм, если на этапе 4 правильно сделаете запрос к БД, чтобы исключить sql injection.
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Не надо читать хэш из базы, надо просто искать в базе строку с указанными логином и хэшем пароля.
Если сайт работает по http, а не https, то надо дополнительно шифровать пароль на стороне клиента разовым асимметричным ключом, передаваемым с сервера.
- пользователь нажал "Вход"
- скрипт клиента послал запрос на ключ
- сервер сгенерировал пару ключей, послал клиенту открытый ключ
- клиент зашифровал пароль полученным ключом, передал логин и зашифрованный пароль на сервер
- сервер расшифровал пароль закрытым ключом
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы