Реалізація восстановлення пароля на веб-сайті
Восстановлення пароля — стандартний флоу Forgot Password. Користувач вводить email, отримує лист зі ссилкою для скидання, задає новий пароль. Реалізується через токен з коротким TTL, що зберігається як хеш у БД.
Флоу
- POST /forgot-password — створити токен, відправити лист
- GET /reset-password?token=...&email=... — форма нового пароля
- POST /reset-password — верифікувати токен, змінити пароль, видалити токен
Laravel Password Broker
Laravel включає вбудований механізм восстановлення пароля.
Зберігання токенів
Laravel зберігає bcrypt-хеш токену у таблиці:
| token (bcrypt) | created_at | |
|---|---|---|
| [email protected] | y0$... | 2024-01-15 10:00 |
Токен діє 60 хвилин (параметр у config/auth.php). Застарілі записи видаляються командою, яку рекомендується додати до cron.
Безпека
- Однаковий ответ для існуючих та неіснуючих email — не розкривати наявність аккаунту
- Rate limiting: не більше 3 запросів на годину з однієї email або IP
- Після використання токена видалити негайно
- При зміні пароля інвалідувати всі активні сесії користувача
Кастомний шаблон листа
Ссилка у листі будується як підписана URL з TTL.
Тимчасовість
1–2 робочих дні включаючи кастомний шаблон листа та rate limiting.







