Насколько разумно использовать авторизацию на сайте с помощью SMS?

Добрый день! <br/> Мы планируем реализовать авторизацию и использование сайта исключительно для "серьезных" пользователей из определенных стран. <br/> При регистрации пользователю необходимо ввести мобильный номер и кодовое слово, после чего он получит SMS с паролем. <br/> Первая авторизация будет осуществляться через SMS, а для последующих входов будут использоваться куки с сессией сроком на год или комбинация номер + пароль. <br/> В случае изменения номера пользователю необходимо ввести старый номер с кодовым словом и новый номер. <br/> Если кодовое слово забыто, потребуется запрос через техническую поддержку. <br/> Из-за того, что на мобильных устройствах куки могут автоматически очищаться, возможно ли справиться с этой проблемой? <br/> Также, в случае потери доступа к личному кабинету, пользователь не теряет деньги и другую важную информацию. <br/> Правильно ли мы понимаем эту логику? <br/> Спасибо!
  • 23 сентября 2024 г. 17:53
Ответы на вопрос 2
Добрый день!

Использование SMS для авторизации имеет свои плюсы и минусы, и этот подход может быть целесообразным в некоторых контекстах. Давайте рассмотрим ваши вопросы и комментарии по поводу описанной системы авторизации.

### Плюсы SMS-авторизации:
1. **Удобство**: Для пользователей это простой и понятный способ входа. Они могут получить код на свой мобильный телефон без необходимости запоминания сложных паролей.
2. **Безопасность**: Временные коды, отправляемые по SMS, могут повысить уровень безопасности, особенно если они подкреплены кодовым словом.

### Минусы SMS-авторизации:
1. **Безопасность SMS**: SMS-сообщения могут быть перехвачены (например, с помощью SIM-сниффинга) или уязвимы для фишинга. Кроме того, отсутствие контроля над SIM-картой пользователя делает этот метод менее безопасным по сравнению с приложениями аутентификации.
2. **Зависимость от мобильной сети**: Если у пользователя проблемы с сетью или он находится в месте без сигнала, он не сможет получить код.
3. **Проблемы с аутентификацией**: Если пользователь потеряет доступ к своему номеру (например, сменит операторов или будет иметь проблемы с SIM-картой), он может столкнуться с трудностями при восстановлении доступа.

### Предложения:
1. **Двухфакторная аутентификация (2FA)**: Рассмотрите возможность добавления второго фактора аутентификации (например, через приложения, такие как Google Authenticator), чтобы повысить безопасность.
2. **Проверка номера телефона**: При регистрации важно убедиться, что указанный номер действительно принадлежит пользователю. Это можно сделать, например, путем отправки одноразового кода для подтверждения номера.
3. **Восстановление доступа**: Убедитесь, что процесс восстановления доступа (например, запрос через техническую поддержку) достаточно защищен и требует подтверждения идентичности пользователя.

### Решение проблемы с куками:
- **Сессии и куки**: Действительно, мобильные устройства могут очищать куки, что может привести к необходимости повторной авторизации. Вы можете рассмотреть возможность использования токенов с длительным сроком действия (например, JSON Web Tokens), сохраненных на клиенте, или сохранять состояние пользователя на сервере.
- **Автоматическое сохранение данных**: Подумайте о внедрении механизма автоматического восстановления сессии (например, с использованием `localStorage` или других возможностей браузера), чтобы обеспечить постоянный доступ пользователей при повторных входах.

### Логика безопасности:
Система, которая вы описали, имеет свои плюсы, но важно помнить об уязвимостях, связанных с SMS-авторизацией. Предусмотрите дополнительные уровни безопасности и возможности восстановления доступа, чтобы защитить пользователей от потери аккаунтов или доступа к важной информации.

В общем, вы правильно понимаете базовую логику вашей системы, но рекомендую тщательно продумать вопросы безопасности и удобства для пользователей, чтобы обеспечить им максимальную защиту и комфорт при работе с вашим сайтом.
Как сказала википедия, "По рекомендациям NIST 2016 года, в новых системах аутентификации не следует использовать SMS из-за опасности их перехвата и перенаправления" (подробнее если интересно можно почитать в статье на вики "Одноразовый пароль") 
Я бы для OTP рассмотрела лучше почту. Или имеется в виду не one time password, а просто пароль, который один раз генерируется по номеру клиента и дальше его можно поменять?
Кодовое слово кажется излишним, люди не так часто меняют номера, даже при смене оператора можно не менять сам номер.
Похожие вопросы