Вхід на сайт за допомогою Telegram

На сьогоднішній день в інтернеті практично всі сайти використовують стародавню і перевірену часом схему реєстрації/авторизації по email. Така схема завжди відмінно працювала і продовжує працювати донині, але вона робить користувача інтернету залежним від поштових сервісів, і на мій погляд, має ряд недоліків.

Зручність

  • Як правило, зараз кожен користувач інтернету має кілька email адрес (особистий, робочий, той який він забув тощо). Бажано що б у всіх адрес були різні паролі від 8 символів. З часом паролі забуваються, особливо коли пароль збережено в браузері і при вході в пошту він заповнюється автоматично.
  • Думаю багато хто стикався з ситуацією, коли, зайшовши на який-небудь ресурс, для отримання необхідної інформації, потрібно було пройти принизливу процедуру реєстрації і підтвердити свій email, зайшовши в свою пошту, і натиснути на страшне посилання, що складається з незрозумілих символів. Після цього, в ящик починає сипатися всякий непотріб у вигляді передплати, на яку ви дали згоду при реєстрації, а може навіть і звичайний спам.
  • На кожному ресурсі так само бажано використовувати різні паролі. У разі коли користувач не може зайти на свій улюблений ресурс, доводиться виконувати чергову процедуру з відновлення пароля: заходити в пошту (згадувати пароль від пошти, якщо вхід відбувається, наприклад, з робочого місця) шукати лист, ходити за посиланнями відновлення\підтвердження, і знову придумувати новий пароль для сайту. Який потім знову буде успішно забутий.
  • Поштова скринька перетворюється на звалище повідомлень, акцій, пропозицій, іншої реклами з ресурсів, на яких ви зареєстровані. Серед цього можна не помітити важливого листа, наприклад. Та це навіть просто відволікає!

Безпека

  • Безвідповідальний підхід до використання поштової скриньки може стати причиною витоку пароля від нього.
  • Фішингові листи можуть стати причиною витоку пароля від ресурсу, під який замасковано гнилий лист
  • email - це як паспорт в інтернеті: за ним можна зібрати певну інформацію з відкритих джерел і використовувати її в різних цілях.
  • Отримавши доступ до email, можна отримати доступ до всіх ресурсів, на яких сидить користувач і до інших email адрес
  • Поштові сервіси та рекламні компанії знають про ваше життя всі

На жаль, немає такої ж популярної, простої і зручної альтернативи, як з точки зору впровадження, так і з точки зору використання. Є всякі «технології відкритого входу», вони дещо зручніші, але вони теж вимагають email адресу, і так само мають ряд недоліків!

Ближче до справи

Як альтернативу/доповнення цьому найстарішому способу, я хочу запропонувати поглянути на спосіб авторизації за допомогою сучасних месенджерів. Реєстрація в тому вигляді, якому вона використовується скрізь, в принципі зникає.

На поточний момент під це завдання за всіма параметрами підходить Telegram. Але і не тільки він. З таким же успіхом можна зробити бота і для інших месенджерів. Схема дуже проста!

Користувач, зайшовши на сайт, на якому у нього немає акаунта, повинен буде додати в свій Telegram бота цього сайту і запросити у нього доступ (наприклад натиснувши на кнопку «Дай мені пароль») Для тих, хто не користується Telegram і не розуміє, про яку кнопку йдеться, прикладаю скрін:

Як приклад, я реалізував схему з одноразовим паролем, яка виглядає наступним чином:

Бот створює одноразовий пароль для входу за вашим запитом.

Щоб увійти на сайт, треба заповнити всього одне поле - «пароль»

У цій схемі пароль, що генерується, завжди буде унікальний і буде належати тільки одному користувачеві Telegram'a, так само пароль буде дійсний обмежений час, а після входу буде знищений.

Використовуючи таку схему, нам не потрібно чекати листа і проходити процедуру реєстрації. Так само не потрібно пам'ятати ніяких паролів. Нам завжди його нагадає турботливий бот.

Зручність такого підходу полягає ще в тому, що Telegram доступний на всіх платформах, і шукати бота не потрібно, достатньо просто пройти за посиланням, яке вказано на формі авторизації. Як це виглядає в живу можна подивитися тут: https://x07.herokuapp.com/login

Цю схему, звичайно ж, можна зробити більш практичною, надійною і безпечною.

Для посилення безпеки і укорачивания паролів, можна зробити бота трохи розумнішим, і в разі якщо бот щось запідозрить, він попросить надіслати йому вашу локацію (Telegram це підтримує), а далі в бекенді буде проведений аналіз того що ви надіслали і звідки походить вхід на сайт.

На випадок, якщо не опиниться під рукою Telegram'a, або раптом Telegram буде не доступний, або ви просто не хочете кожен раз туди лізти, то в БД можна зробити поле з постійним паролем, за яким можна буде увійти завжди. При цьому турботливого бота можна навчити сповіщати вас про будь-який вхід на сайт, якщо ви не запитували у нього пароль.

Плюс до всього, можна також додати ім'я, яке використовується в Telegram'e або будь-які інші поля на ваш розсуд, хоч той же email.

Як захист від простого перебору паролів, можна не прикручувати капчу (яку не можливо розібрати), як це зроблено на більшості сайтів, а навчити бота, що б той надсилав вам повідомлення з проханням підтвердити вхід.

Придумати тут можна величезну кількість варіантів реалізації.

Плюси такого підходу:

  • Не потрібно проходити довгу і принизливу процедуру реєстрації на сайті, а потім лізти в поштову скриньку і шукати там лист або з паролем або з посиланням на підтвердження реєстрації.
  • Не потрібно пам'ятати пароль, пароль завжди генерується новий за запитом!
  • Безпечніше ніж електронна пошта!
  • Telegram активно розвивається і стабільно працює!
  • Пароль неможливо вкрасти, не заволодівши мобільним телефоном
  • Доступ до Telegram через веб також складно отримати, як до мобілі користувача
  • Telegram доступний на всіх платформах
  • За допомогою цього підходу ваш сайт стає більш доступним користувачам
  • Для ресурсів, які вимагають ваш номер телефону з метою підвищити захист від фекових акаунтів, не потрібно буде вводити номер телефону, оскільки Telegram вже прив'язаний до номера мобільного телефону. Деяких людей відлякує реєстрація по мобільному телефону
  • Ваш номер телефону залишається завжди в таємниці і не доступний власникам сайту

Мінуси, куди ж без них...

  • Через ботів теж можна слати спам
  • Що відбувається на серверах Telegram невідомо, там так само може проводиться збір і аналіз ваших даних (може це не мінус)
  • При великій кількості користувачів зросте навантаження на сервер де буде жити бот
  • Якоюсь мірою з'являється залежність від Telegram
  • Telegram може поміняти або розширити свій API, що може дозволити сайтам отримати більше інформації про вас, або навпаки зробити цю схему не життєздатною

Що ви про це думаєте? Чи будете ви впроваджувати у своїх проектах такий спосіб авторизації?