Я думаю, вариант 2 (gbrandt's) был бы отличным методом, если бы он сочетался с некоторой личной информацией, которую вы уже имеете для пользователя. то есть дата рождения.
Когда пользователь запрашивает новый пароль (сброс), вводя свой адрес электронной почты, он также должен ввести правильную дату рождения (или что-то еще), прежде чем пароль будет сброшен, и новый пароль будет отправлен пользователю по электронной почте.
Только те, кто его хорошо знает, могут раздражать его, сбрасывая его пароль! Это не может быть незнакомец или бот
После 5 или 7 неправильных комбинаций адреса электронной почты и даты рождения пользователю по электронной почте отправляется запрос на сброс пароля из-за неправильных учетных данных. Тогда сброс пароля для этой учетной записи приостанавливается на 24 часа или на любой другой желаемый период.
(если слишком много пользователей обращаются к веб-администратору по поводу этого электронного письма, он узнает, что кто-то пытается злонамеренно получить информацию с вашего веб-сайта / приложения)
Что вы, ребята, думаете?