Я создаю приложение, в котором пользователь должен подтвердить свой адрес электронной почты после регистрации. Это делается через OTP, который отправляется после того, как пользователи обращаются к API регистрации. Если OTP действителен, мы подтверждаем регистрацию, в противном случае мы удаляем пользователя.
Когда я регистрирую пользователя, я также создаю объект OTP, который связываю с пользователем.
Например,
Код: Выделить всё
class Otp{
.
.
.
private User user;
// setter and getter
.
.
}
Итак, вот сценарий. Допустим, пользователь A зарегистрировался, но еще не подтвердил себя. Теперь какой-то другой человек обращается к API проверки и случайно отправляет тот же OTP, который был получен пользователем A, и пользователь A регистрируется. Теперь вероятность того, что это произойдет, очень мала, потому что длина моего OTP будет составлять 7-8 символов, а не ноль.
Я считаю это недостатком безопасности. Все ли OTP-системы так ошибочны или я что-то делаю не так? Если да, может ли кто-нибудь предложить хороший дизайн системы OTP.
Подробнее здесь:
https://stackoverflow.com/questions/742 ... rification