Реализация аутентификации через SMS (Laravel)

164
26 февраля 2018, 02:29

Всем привет. Делаю систему аутентификации на Laravel через SMS. Планирую такой алгоритм:

  1. Человек в первой форме регистрации вводит лишь свое имя и телефон
  2. Контроллер проверяет, есть ли такой номер телефона в БД, если нет, то идем дальше
  3. Генерируем 6-значный код для подтверждения телефона, через сторонний API отсылаем смску на телефон, а также сохраняем данный код в сессию пользователя.
  4. На фронте показываем ему следующий экран, т.е. форму ввода кода подтверждения.
  5. Человек вводит код, он зарегистрирован (дальше все действия понятны

По этому алгоритму есть несколько вопросов:

  1. Правильно ли в пункте 3 сохранять код в сессию пользователя? Или же лучше сделать таблицу в БД с кодами подтверждения, где будут поля "номер телефона-код-действителен до"?
  2. Как предотвратить действия злоумышленников (смс-ки платные, поэтому может быть плохо)? Какие есть методы защиты от сброса сессии через очистку браузера и отправки кода подтверждения заново?
Answer 1

Делать аутентификацию через смс на этапе регистрации (как в п.1 вопроса) смысла нет. Что это вам даёт? Боты вам в лёгкую сольют любой бюджет смс-шлюза (если кому-то это будет надо) за одни сутки регистраций.

Задача много-уровневой аутентификации подтвердить, что в данный момент в личный кабинет заходит именно хозяин аккаунта.

Процесс регистрации логичнее закрывать рекапчами. Вот при попытке входа уже зарегистрированного пользователя пусть вылетает ему на встречу смс с кодом подтверждения. Такой подход обезопасит как хозяина аккаунта от несанкционированного доступа, так и вас от злонамеренных действий, если вдруг у вас зарегистрируется бот с живым номером телефона, и начнёт безостановочно запрашивать смс.

READ ALSO
Как удалить конкретную версию php-fpm

Как удалить конкретную версию php-fpm

Обновился до PHP 72, а вместе с ним обновились и все модули, включая php-fpm

174
Не устанавливается плагин для Sublime Text 3

Не устанавливается плагин для Sublime Text 3

ПриветНе могу установить плагин Sync Settings через Package Control

350