Аутентифицировать пользователей, используя только пароль - PullRequest
0 голосов
/ 23 июня 2019

Мне нужно создать систему аутентификации для экспресс-приложения, которое я создаю.Клиент попросил иметь систему паролей, которая использует только 4-значный пин-код.У меня есть настройка кода для сохранения и хеширования булавки с остальной информацией пользователя при создании нового пользователя, и проект является просто внутренним сервером, поэтому ему не нужно обрабатывать тонну пользователей.

Моя проблема при входе пользователя в систему. Я использую bycrypt для хеширования пароля, но bycrypt генерирует совершенно новый хэш для идентичных строк.

У меня возникают проблемы при извлечении пользователя с помощьюWHERE hash=hash поиск SQL.Но это не работает, потому что хэш каждый раз отличается, даже когда пароли идентичны.

Я мог бы получить всех пользователей и перебрать их всех и использовать метод .compare bycrypt.Но это не сработает в долгосрочной перспективе, так как количество пользователей растет, и bycrypt собирает много времени на процессор, чтобы помочь предотвратить атаки методом перебора.

Я также мог бы создать свою собственную функцию хеширования,Тем не менее, это сделало бы это так, что я должен хранить соли с каждым пользователем, чтобы сделать каждый пароль уникальным.Затем возникает та же проблема, связанная с отсутствием одинакового хэша для идентичных строк.

Я знаю, что это расплывчато, но мне нужна помощь, чтобы придумать способ получить пользователя, извлекая его с использованием хешированного пароля.

1 Ответ

2 голосов
/ 23 июня 2019

Просто сохраните PIN-код в виде простого текста. Использование функции хеширования на 4-значном ПИН-коде лишь создает ложное чувство безопасности. Даже намеренно медленная функция хеширования легко перебить, если есть только 10 000 возможных входов.

У меня возникают проблемы при извлечении пользователя с помощью WHERE hash=hash SQL-поиска

Вы говорите, что даже не знаете, кем он себя называет, но используете 4-значный пин-код в качестве требования и доказательства? Похоже, вы строите систему только с претензией на безопасность.

...