Лучшая практика при генерировании токенов сброса паролей
-
21-12-2019 - |
Вопрос
Любая лучшая практика на том, как следует построить токен пароля сброса?Я думаю:
Случайные 17 символов [A-ZA-Z0-9] + глобально уникальный ID + случайные 17 символов [A-ZA-Z0-9].
Есть ли лучший раствор, или отраслевой стандарты на сбросе паролей токенов?
Решение
Есть некоторые важные моменты для рассмотрения.
- Код должен быть действительно случайным (читать от mcrypt_dev_Urandom) и не должен быть зарекомендовавшись от другой информации о пользователе.
- В идеале код код Base62 кодируется (A-Z A-Z 0-9), чтобы избежать проблем с URL.
- магазин только Хэш токена в базе данных , в противном случае злоумышленник с доступом к чтению в базе данных может сбросить любую учетную запись.
- Вы хеш-токен с хеш-алгоритмом, как SHA512 без соли. Это безопасно, если токен очень сильный (минимальная длина 20 с 0-9 A-Z A-Z). Теоретически вы должны проверить, существует ли такое хэш, прежде чем ввести его в базу данных, на практике это незначительно. Я реализовал класс сброса паролей , который может обрабатывать такие токены.
- Вы хеш-токен с bcrypt и солью. Это позволяет более короткие токены, но вы не можете искать хэш-токен в базе данных. Вместо этого вы должны включить ряд id в ссылке, чтобы найти токен.
Это приводит к проблеме, которую вы должны найти хэш токена в базе данных, после того как пользователь нажал на ссылку. Существует два возможных способа хранения токена:
- .
Не связан с StackOverflow