Как правильно защитить данные при восстановлении пароля?
На сервисе реализована восстановление пароля через электронную почту или смс на мобильный телефон.
Как можно защититься от злоумышленников, которые путем перебора email/телефонов могут узнать кто зарегистрирован на сервисе, а кто нет?
Первое правило - независимо от того, зарегистрирован такой адрес или телефон, не давать никакой информации об этом на странице восстановления. То есть, после ввода телефона или адреса, пользователь в любом случае должен получить страницу, содержащую один и тот же текст, и если такой адрес числится в базе сервиса, и если нет.
Moskus, пробежался сегодня по десятку крупных сервисов, ни один не использует такой подход. Он будет очень неудобным для пользователя, если он ввел неправильный адрес/телефон
vreznikov, все остальные "подходы" - половинчатые: пользователю немного удобнее (если он идиот и не может написать свои данные правильно), но в то же время - позволяет выяснить факт регистрации посторонним лицам, знающим о человеке публичную информацию (его email или телефон).
То, что какие-то "крупные сервисы" делают иначе - не значит, что подход, который я описал - неправильный, а значит только, что им наплевать на privacy пользователей.
Тут есть, конечно, еще один вектор - попытка регистрации, а не восстановления данных. Потому что повторная регистрация с одинаковыми данными таки должна приводить к ошибке. Но это уже более широкая задача архитектуры сервиса, включающая, например, привязку не к email или телефону, а к использованию текстового идентификатора (ника), как основного.