Впровадження 2FA через SMS: повний посібник із безпеки для бізнесу
SMS як другий фактор входу має перевагу над застосунками-автентифікаторами й push: воно завжди доходить, на будь-який телефон, без встановлення й без акаунта в окремому застосунку. Для більшості SaaS-, банківських та e-commerce-додатків це оптимальний компроміс між безпекою й охопленням. Цей посібник показує, як впровадити SMS-2FA безпечно й стійко до зловживань.
Коли SMS-2FA доречне (а коли ні)
SMS підходить як 2FA скрізь, де важливі охоплення й простота: вхід у панель, підтвердження платежу (PSD2 SCA), верифікація номера під час реєстрації, авторизація чутливих операцій. Це також найкращий запасний варіант, коли push не доходить.
Чесно про межі: для акаунтів найвищого ризику варто розглянути апаратні ключі чи TOTP, бо SMS теоретично вразливе до SIM-swap. Але для 95% бізнес-застосунків SMS залишається найкращим балансом безпеки й конверсії.
Архітектура: не тримайте логіку OTP у себе
Найпоширеніша помилка – генерувати й зберігати коди у власній базі: зайвий ризик. З нашим 2FA API ви робите це двома викликами:
POST /otp/send → генерує й надсилає код
POST /otp/verify → перевіряє код, повертає true/falseДовжину коду (4, 6 чи 8 цифр) і час життя (від 30 секунд до 10 хвилин) налаштовуєте самі. 6 цифр і 5 хвилин – розумний стандарт.
Rate-limiting і захист від зловживань
Без лімітів 2FA стає вектором атаки – і дорогим, бо кожна SMS коштує грошей. Застосуйте багатошаровий захист:
- Ліміт на номер – максимум 3–5 кодів на годину на номер (захист від «SMS-бомбінгу»).
- Cooldown – щонайменше 30–60 секунд між запитами коду.
- Ліміт спроб перевірки – блокування після 3–5 хибних кодів проти brute-force.
- Ліміт на IP – обмежте кількість номерів з однієї адреси.
Наш API має вбудований rate-limiting на номер і повний журнал аудиту кожного OTP.
Доставка = безпека
Код, що не доходить, означає заблокованого користувача – на практиці покинутий кошик або тікет у підтримку. Медіанний час доставки SMS у Польщі – близько 2 секунд. Ключова якість маршруту: failover на альтернативного оператора рятує ситуацію, коли перша спроба не вдалася. Як зареєстрований у UKE польський оператор, ми маємо прямі підключення до національних мереж.
UX коду: дрібниці з ефектом
Безпека не повинна вбивати зручність. Перевірене: назва сервісу й код ближче до початку повідомлення (автозаповнення iOS/Android його зчитує); префікс @domain #code для Web OTP API; не змішуйте посилання й код в одній SMS (це привчає до фішингу). Установіть поле відправника на назву бренду – дивіться наш матеріал про Sender ID.
Відповідність PSD2 та GDPR
У платежах SMS-OTP – прийнятний елемент посиленої автентифікації клієнта (SCA), у поєднанні з фактором знання (пароль/PIN) для повної відповідності PSD2. Щодо даних: ми обробляємо номери лише на серверах ЄС, з повним DPA, і зберігаємо логи стільки, скільки вимагає закон. Деталі інтеграції в документації, тестовий акаунт зі 100 безкоштовними SMS – на сторінці реєстрації.
FAQ
Чи маю я сам генерувати й зберігати OTP-коди?+
Ні. /otp/send генерує й надсилає код, /otp/verify його перевіряє. Жодної логіки чи кодів на вашому боці.
Як захиститися від флуду (SMS-бомбінгу)?+
API має rate-limiting на номер (напр. 3–5 кодів/годину) і журнал аудиту. Додайте cooldown, ліміт хибних спроб і ліміт на IP.
Чи відповідає SMS-2FA вимогам PSD2 SCA?+
Так. SMS-OTP – прийнятний елемент «володіння» посиленої автентифікації. Поєднайте його з фактором знання (пароль).
Чи безпечне SMS-2FA попри ризик SIM-swap?+
Для більшості бізнес-застосунків так – найкращий баланс безпеки й конверсії. Для екстремального ризику додайте TOTP чи апаратні ключі.