Подойдёт ли авторизация средствами MySQL?

При регистрации пользователя его пароль присаливается рандомной строкой, перегоняется через sha1, снова присаливается, снова прогоняется - и так 5 раз. К результату лепится соль и всё это пишется в поле таблицы MySQL.

При попытке логина аналогичные действия выполняются с введённым паролем:
Из БД запрашивается хеш пароля запрошенного юзера, из него берется соль, и с участием введённого пароля и полученной из БД соли выполняется прогонка по вышеописанному алгоритму. Затем результат сравнивается с хешем в БД. Если совпало - юзер авторизован.

Вопрос заключается в том, как это реализовывать - через сервер MySQL, то есть все расчеты sha1 и проч. выполнять на серваке, или просто получать с MySQL строки, а в PHP уже всё считать и сравнивать?
Конечно строка запроса будет приличная, но я часто читаю, что не надо делать на PHP то, что можно сделать на сервере БД.
  • Вопрос задан
  • 473 просмотра
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
1. К авторизации этот вопрос не имеет отношения.
поскольку буквальный ответ на вопрос из заголовка будет, разумеется - НЕТ. Одними средствами БД авторизовать никого нельзя.

2. Вопрос, на самом деле - где хэшировать пароль. В скрипте или БД.
В итоге вопрос получается дурацкий, поскольку очевидно, что в БД придется городить код из гуана и палок, без малейшей на то причины.

Еще одно соображение - безопасность. Пароль в принципе нежелательно отправлять в БД в открытом виде, чтобы он потом не засветился в каких-либо логах.

3. Весь этот детский лепет с sha1 в цикле заменить на php.net/manual/en/function.password-verify.php
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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