Авторизация с помощью QR

в 6:06, , рубрики: QR-коды, usability, авторизация по QR-коду, Веб-разработка, вход на сайт, метки: , ,

Приветствую тебя, уважаемый читатель.

Пришла ко мне как-то идея — сделать вход на сайт с помощью QR-кода. Поиск в сети дал несколько результатов:

  1. SQRL
  2. и другие — здесь уже провели поиск, поэтому не буду переписывать)

В начале 2012 года похожий эксперимент был даже у Google (для двухфакторной аутентификации), но не прижилось.

Авторизация с помощью QR

Всё это сложные хитрые клиент-серверные реализации и они, конечно, очень крутые. А вот ключевой момент моей yet another genius идеи:

Пользователь заходит на сайт в современном браузере (где поддерживаться камера и камера есть) и подносит QR-код к камере устройства. А в коде закодированы… правильно! — данные для входа (пара логин-пароль)… просто так, в незашифрованном виде, обычным текстом. Код считывается на стороне клиента javascript'ом, данные вставляются в форму тем же javascript'ом, форма авторизации отправляется javascript'ом. По большому счёту можно использовать и другие виды штрихкодов, но QR, как мне кажется, наиболее популярен (широко распространён) для подобных задач.

И да, применять это можно не только в вебе, но и в любых непонятных ситуациях, когда требуется ввести логин/пароль/что-то с клавиатуры, а у вас есть камера и QR-код.

Наверное идея звучит глупо. Она слишком проста. Но позвольте мне рассказать почему она имеет право на жизнь.

Кому это НЕ нужно

Вам это не нужно, если:

  • ваш логин «login» и пароль «password»/«qwerty»/«12345» и вы используете их на Однокласснкиах, ВКонтакте и вообще везде
  • вы всегда пользуетесь интернетом с одного компьютера и все логины/пароли для всех ресурсов у вас сохранены в браузере
  • вам это не интересно

Преимущества перед ручным вводом

Главное преимущество — ручного ввода нет. Скорость ввода пароля этим способом ~1 секунда при любой допустимой длине пароля
Привлекательность такого способа авторизации становится заметна в случаях когда:

  • вы параноик и используете разные пароли (а может быть и логины) для ВКонтакте, Одноклассники, Twitter, Google, Yandex, Mail.ru, StackOverflow и 50-ти других ресурсов
  • у вас 2-3 ОЧЕНЬ безопасных пароля длиной более 30 символов и их нужно часто вводить
  • вы пришли к другу и хотите войти на сайт *вписать название сайта*, а у друга ru.wikipedia.org/wiki/Das_Keyboard
  • у вас есть необходимость часто входить на большое кол-во разных ресурсов и вводить множество разных логинов/паролей… Ну а вдруг!

Можно, конечно, использовать отпечатки пальцев, USB-токены, одноразовые пароли, -NFC-теги-, но для всего этого нужна *модификация серверной части* или аппаратные модификации клиента и др. В случае считывания QR-кода прямиком в поля ввода сервера получает всё те же логин и пароль. Камера и современный браузер есть на большинстве современных ноутбуков/планшетов/ПК.

Что ещё?

Где это можно использовать:
— есть множество приложений, хранящих пароли в базе данных, защищённой мастер-паролем. Это классно, но эти приложения показывают вам пароль в виде текста и вам нужно ввести его руками. Можно отображать сохранённый пароль в виде QR-кода
— QR-код можно -выложить чёрным жемчугом на платиновой пластине- распечатать на бумажке/пластике/ и прикрепить его как стильный брелок/связку брелоков
— QR-код можно генерировать при регистрации где-либо, а ваше приложение-менеджер-паролей его считает и сохранит
— можно генерировать довольно сложные одноразовые пароли и кодировать их в QR. Например, для той же двухфакторной авторизации

Демо

Т.к. не особо силён в javascript, то для проверки концепции стянул скрипты, выполняющие задачу чтения кода с камеры, с сайта webqr.com/ (спасибо им) и слегка модифицировал их. Посмотреть можно тут

Безопасность

Бесспорный и главный плюс классических паролей — они хранятся в голове и набираются руками. Главная опасность вышеописанного способа — ваши QR-коды стали доступны злоумышленнику. Но если вы, как мой папа, храните все пароли в файле «Мои пароли.doc» на рабочем столе, то qr-коды даже над>жнее — их не прочитать глазами.

Всё

Спасибо за внимание. Ожидаю критических комментариев, указывающих на фатальные недостатки способа. Или восхищённых возгласов — «Как же я сам до этого не додумался!»?

Автор: solo12zw74

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js