#php #mysql
#php #mysql
Вопрос:
В основном, когда пользователь хочет восстановить свой пароль, я генерирую хэш и сохраняю его в базе данных MySQL. Я не хочу, чтобы этот хэш существовал вечно, но должен быть удален из базы данных, скажем, через 5 минут.
Кто-нибудь знает, как это сделать?
Также, если у кого-нибудь есть какие-либо идеи по реализации восстановления пароля другим способом, я хотел бы услышать.
Заранее спасибо, Том.
Ответ №1:
Рядом с хэшем сохраните с ним дату. Всякий раз, когда эта дата в прошлом, ключ восстановления больше не работает.
Тогда нет необходимости фактически удалять ключ
редактировать на основе комментариев:
Вы должны время от времени запускать cronjob. Например, один раз в день, для удаления неиспользуемых ключей, срок действия которых уже истек.
Комментарии:
1. Конечно, обслуживание базы данных также важно. У него все равно должно быть задание cron или что-то в этом роде, чтобы каждую ночь удалять все ключи, прошедшие текущую дату.
2. И если вы хотите удалить ключ, вы можете просто запускать запрос каждые несколько минут, который удаляет ключи, срок действия которых истек.
3. Если вы воспользуетесь этим подходом, вы также сможете отслеживать, как часто кто-то пытается восстановить пароль (в зависимости от структуры данных), что может помочь вам идентифицировать атаки на ваше приложение / отслеживать, где произошли вторжения.
4. если бы вы были так добры, чтобы на самом деле одобрить ответ 🙂
5. одобрено сейчас, пришлось подождать 10 минут, чтобы принять. Спасибо за информацию о cron.
Ответ №2:
Лучше всего было бы установить кэш APC (который имеет много других преимуществ) и просто установить срок действия пары ключ-значение через желаемый промежуток времени.
Комментарии:
1. Привет, спасибо за ответ. Я смотрел на APC, и, вероятно, это то, что я собираюсь добавить в систему в будущем, просто ищу быстрое решение atm 🙂