Безопасное восстановление доступа к аккаунту пользователя?
Здравствуйте. Подскажите пожалуйста оптимальный/актуальный вариант организации безопасного restore access (при "forgot password") к пользовательским аккаунтам. Сразу понимаю как обойти все что приходит в голову. Или не могу придумать что-то действительно надежное, ну или мысля вообще не туда забрела.
По ходу самый безопасный вариант будет типа контрольного вопроса. При чем что бы пользователь сам устанавливал и вопрос(возможно несколько) и ответ(варианты ответов). Это конечно более напряжно для юзера и менее "юзабилити" но зато без всяких дырявостей ввиде перейдите по ссылке с Hash-ем, прогулок этих Hash-ей по www и т.п.
Что скажите?
Я думаю, ответ на этот вопрос, куда проще чем кажется. Вам достаточно всего лишь посмотреть, как подобные механизмы устроены у Яндекс, Google, Microsoft и/или других крупных компаний и выбрать один из увиденных методов. Я думаю, что их методологии отработаны и проверены годами.
Отправлять на email одноразовую ссылку восстановления, которая работает только в текущей сессии. Надежно, проверено временем. Если хочется извращений, то можно еще смс-код привинтить.