LINUX.ORG.RU

Посоветуйте «дружелюбный» способ входа по email

 ,


0

2

Сделал у себя на сайте вход «без пароля». Если пароль не вводить, то шлется ссылка на почту.

Вылезла проблема - юзеры сидят за десктопом, смотрят почту на мобилке и оттуда открывается другой браузер.

Как быть-то? Понятно, что можно руками код из письма набить, но неудобно же. Есть какой-то более дружелюбный сценарий?

★★★★★

Как вариант короткий код 4-6 цифр, сроком жизни в несколько минут, как сейчас по смс отправляют.

ddidwyll ★★★★
()

Или ссылка на мобилке, которая ведёт на страничку, на которой - вы подтверждаете что хотите залогиниться в браузере таком-то с такого то ИП и кнопки да/нет.

ddidwyll ★★★★
()
Последнее исправление: ddidwyll (всего исправлений: 1)

qr код показывай, будь модным, блеать

vvviperrr ★★★★★
()

Если пароль не вводить, то шлется ссылка на почту.

шли не ссылку. Очень удачно сделана регистрация в Steam.
Так и тут, жди ответа с почты.

modest
()
Последнее исправление: modest (всего исправлений: 1)

дружелюбный

email

не сходится

firkax ★★★★★
()

Просить вбить код не из письма на компьюетер, а из компьюетера в телефоне (или на том устройстве где открыли письмо).

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

javascript
()
Ответ на: комментарий от modest

Предлагаешь ответом на почту логинить? В принципе вариант, только гиморно сетапить - почтарь нужен со скриптами разбора.

Vit ★★★★★
() автор топика
Ответ на: комментарий от ddidwyll

У меня некоторые юзеры раньше ставили пароли вроде 1976, а ты предлагаешь им про IP рассказывать :).

Но близко к тому что я надумал. Хотел на странице логина показывать картинку, а когда ссылку открывают с мобилки, спрашивать «если хотите пустить комп с такой картинкой, нажмите ДА».

Vit ★★★★★
() автор топика
Ответ на: комментарий от javascript

Просить вбить код не из письма на компьюетер, а из компьюетера в телефоне (или на том устройстве где открыли письмо).

Мммм… чем это принципиально лучше, по сравнению с нажатием кнопки «да» вместо ввода кода?

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

Давай пока сойдемся на том, что если ссылку открыли в другом браузере, надо попросить дополнительное действие. Вопрос какое, чтобы не сильно гиморно и имело смысл.

Самое простое - просто нажать кнопку «подтвердить». Минусы/плюсы? Кнопка отсечет ботов.

Vit ★★★★★
() автор топика

При запросе на вход по логину и мэйлу, выдаёшь в браузер uuid, отправляешь почту и меняешь кнопку «хочу залогиниться по мылу» на кнопку «я подтвердил мыло, пустите меня».
В отправленную ссылку пихаешь login+timestamp+uuid+hmac.

Клиент получает ссылку в почту и идёт по ней чем попало.
Ты при получении запроса на «<путь к твоему валидатору>?<какой-то набор буквоцифр>» сверяешь hmac и непросроченность и пишешь себе в кэш.
В случае битого hmac я бы отвечал «ОК» и тихо временно банил уродцев. При правильном hmac и просрочке отвечал бы «ссылка протухла, запросите новую».

Клиент жмёт на «я подтвердил, пустите», тебе летит его login и uuid. Ищешь их в кэше, пускаешь клиента, вытираешь из кэша.

Раз в N минут пробегаешь по кэшу и выкидываешь тухлятинку.

frob ★★★★★
()
Ответ на: комментарий от Vit

Кнопку ДА пользователи нажимают не думая и не читая, как любые кнопки.

Я злоумышленник, я ввожу почту Васи, он переходит по ссылке, нажимает не думая кнопку, я попадаю в аккаунт.

Если так устраивает, то действия не нужно вообще - в письме предупреждаешь о последствиях перехода по ссылке, а при переходе сессия автоматически авторизована.

Кнопка отсечет ботов.

Откуда специализированные боты ходящие по ссылкам из e-mail? Даже обычным ботам у почтовых сервисов (вроде антивирусов) запрещали это делать, потому что ссылки могут быть одноразовыми.

Но, в любом случае тут достаточно отслеживания заголовков.

javascript
()
Последнее исправление: javascript (всего исправлений: 2)
Ответ на: комментарий от Vit

Давай пока сойдемся на том, что если ссылку открыли в другом браузере, надо попросить дополнительное действие.

Но зачем?

На самом деле необязательно что-то делать даже в том браузере откуда пользователь хочет зайти без пароля. Отдать ему туда малюсенький жабоскрипт, который в следущие N минут будет каждые M секунд пытаться влезть с логином и uuid-ом и в случае отлупа писать «ссылка не подтверждена, протухнет через X минут». После N минут вернёт всё обратно на страницу логина и прекратит возню. Ну или примерно тоже самое, но с вебсокетом.

frob ★★★★★
()

Мой банк при входе показывает картинку (типа qr-кода, но не совсем), которую затем нужно показать камере мобильника, предварительно открыв приложение банка. Приложение на телефоне логинится по фейсу.

Miguel ★★★★★
()

Если ссылка открывается на другом компьютере (контролируешь по IP+UA), то там выполняется вход и отображается страница с кнопкой «авторизовать вход, выполненный через Google Chrome на Windows 10 из Нур-Султана (Казахстан)». По нажатию кнопки также выполняется вход на исходном компьютере (с которого была запрошена ссылка).

Legioner ★★★★★
()
Ответ на: комментарий от Miguel

Так же делает и телеграм, для подключения устройства. Это просто и легко и правильно, потому что в данном сценарии одно устройство (то, где приложение) уже авторизовано.

Но в его юзкейсе не все так просто.

  1. Открывать сканер qr кода он должен по ссылке из письма - это дополнительный код (нужно писать этот самый qr-сканер).

  2. Пользователь должен будет разрешить досутп к камере из браузера. Не все будут это делать, многие машинально нажмут отмена при запросе разрешения.

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

P.S

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

Все как в банках и мессенджерах, только без установки и написания нативных приложений.

javascript
()
Последнее исправление: javascript (всего исправлений: 2)

К слову, сама задумка я бы не сказал, что красивая.

Почта ненадежный канал. Доставка письма может задерживаться по независящим от тебя причинам. Как следствие пользователь может пытаться входить несколько раз, а потом получить сразу кучу писем с неясно какой ссылкой из них легитимной, или вовсе попасть под твои там антифрод системы о множественных попытках.

javascript
()
Последнее исправление: javascript (всего исправлений: 1)
Ответ на: комментарий от javascript

я ввожу почту Васи, он переходит по ссылке

Вася у тебя совсем дурак – переходит по любым ссылкам во всех подряд мэйлах?

frob ★★★★★
()
Ответ на: комментарий от javascript

Ты с пользователями не работал никогда.

Это ты по юзерпику угадал?

frob ★★★★★
()

Если пароль не вводить, то шлется ссылка на почту

Не лучше ли будет сделать кнопку «Войти без пароля»?

YAPH
()
Ответ на: комментарий от javascript

Кнопку ДА пользователи нажимают не думая и не читая, как любые кнопки.

Я злоумышленник, я ввожу почту Васи, он переходит по ссылке, нажимает не думая кнопку, я попадаю в аккаунт.

Вот именно этот кейз я хочу исключить.

Сейчас требуется открыть ссылку именно в том браузере в котором логинились (либо вместо ссылки код в форму ввести). Поэтому с других компов вводить почту бесполезно.

Но юзеры, которым реально надо войти, напрягаются.

Vit ★★★★★
() автор топика
Ответ на: комментарий от Miguel

Твой мобильник является авторизованным девайсом, и ты не уходишь с сайта. Есть гарантия, что авторизуешь именно себя а не левого Васю.

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

Vit ★★★★★
() автор топика
Ответ на: комментарий от javascript

Токенов нагенерить не жалко. Они все легитимные и живут 30 минут, этого достаточно чтобы письмо доехало.

Приложение для скана QR так себе вариант. Можно еще authy и т.п. привернуть, но это по сути не проще пароля, поэтому не имеет практического смысла в моём случае.

Ну, то есть, я хочу альтернативу паролю, но простую для массового юзера и достаточно надежную.

Vit ★★★★★
() автор топика
Ответ на: комментарий от Vit

Я и говорю - при переходе по ссылке из письма, в случае если переход оказался в другом браузере/устройстве, проси ввести код на том самом устройстве на котором осуществлен переход по ссылке. А код был показан в изначальной форме авторизации (после отправки ссылки, или даже динамически подгрузившись, когда задетектится что ссылка открылась на в другом браузере, не суть). Это будет осознанное действие, а не просто клик по кнопке, и гарантирующее легетимность того кто авторизовался в форме и перешел после этого по ссылке.

Код не должен быть сложным - это может быть простой пин из 4 цифр - на телефона сразу отображается цифровая клавиатура - фокус можно установить сразу, чтобы она сразу показалась при переходе. Или хоть нарисовать эти 10 цифр - это одинаково просто тачнуть 3-4 раза что на телефоне, что мышкой.

Можно и не пин, а хоть - выбрать какой-то эмоджи из набора.

Короче инвертировать логику ввода кода, чтобы человек не бегал от устройства к устройству - если он уже перешел на другое для перехода по ссылке, то там и вводит код, который ему сразу показали, когда отправили почту проверять.

javascript
()
Ответ на: комментарий от Vit

Я злоумышленник, я ввожу почту Васи, он переходит по ссылке, нажимает не думая кнопку, я попадаю в аккаунт.

Вот именно этот кейз я хочу исключить.

Отправка по почте пина для ввода на открываемой странице – это чуть более усложнённый вариант нажатия на кнопку на этой странице и юзера лезущего куда попало и бездумно что-то там жмущего от проблем не спасает.

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

QR-коды-то нафига? Юзер зашёл с десктопа, ты ему в телефон ссылку, а ему там показывают QR, чтобы что?

frob ★★★★★
()
Ответ на: комментарий от frob

Отправка по почте пина для ввода на открываемой странице

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

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

Это что за идиотство. Зачем в этой цепочке ссылка нужна? Почему сразу не прислать на почту пароль?

javascript
()
Ответ на: комментарий от javascript

Я и говорю - при переходе по ссылке из письма, в случае если переход оказался в другом браузере/устройстве, проси ввести код на том самом устройстве на котором осуществлен переход по ссылке. А код был показан в изначальной форме авторизации (после отправки ссылки, или даже динамически подгрузившись, когда задетектится что ссылка открылась на в другом браузере, не суть). Это будет осознанное действие, а не просто клик по кнопке, и гарантирующее легетимность того кто авторизовался в форме и перешел после этого по ссылке.

IMHO получается удвоение сущностей. Раньше был код/ссылка в почте, а теперь появится еще и пин. Юзеры с ума сойдут.

Сделать так конечно можно, только IMHO легче от этого никому не станет.

Vit ★★★★★
() автор топика
Ответ на: комментарий от javascript

Прикольно. Если честно, меня LastPass устраивает. Но пусть пилят, конкуренция это хорошо.

Vit ★★★★★
() автор топика
Ответ на: комментарий от Vit

WebAuthn не альтернатива LastPass. Это API для возможности авторизовываться помощью крипто-токенами (такими, как usb ключи). И в то же время проприетарщики делают возможность, чтобы само устройство могло выступать таким ключем. Например сейчас уже можно авторизовываться по отпечатку пальца (если на устройстве активирована биометрия), при этом сам отпечаток передаваться не будет. В будущем вроде хотят добавить способов генерировать ключи.

У mail.ru уже активированы эти штуки, можно в настройках подключить устройство и потом авторизовываться без пароля по отпечатку пальца или крипто-токеном.

javascript
()
Ответ на: комментарий от javascript

Это что за идиотство. Зачем в этой цепочке ссылка нужна? Почему сразу не прислать на почту пароль?

А если вместо выкриков попробовать подумать?

(первый вариант)
«сразу на почту пароль»
Атакущий зашёл на сайт, ввёл мэйл юзера, ему показали поле для ввода одноразового пароля. Атакующему известно, что пароль улетел куда-то в почту. Можно начинать перебор.
По условиям задачи юзер откроет почту не там, откуда будет пытаться логиниться (пароль надо «перенести» между устройствами) И не сможет ввести руками пароль длиннее чем три буквы (потому что юзер).
Поэтому пароль должен быть очень коротким («выбрать пиктограмму из набора»).
Итого: перебор надо выполнять на небольшой совокупности. «Двадцать старушек – рубль».
Этот вариант может работать только в случае длинных одноразовых паролей, а перенос длинных паролей между устройствами не удовлетворяют требованию «дружелюбности».

(второй вариант)
«Теперь обратим свои взоры» на показ юзеру одноразового пароля в браузере для ввода по ссылке из мэйла.
Атакующий инициирует отправку юзеру письма со ссылкой.
Юзер ИДЁТ по этой ссылке и там его просят ввести пароль, который известен только атакующему.
А теперь подумай, что происходит дальше.
Дурацкий вариант (атакущий тоже тупой): юзер громко говорит «какой ещё пароль?» и тупо вводит 1234. Если у них с атакующим совпадает день рожденья, то как раз это и есть пароль.
Вариант со злым атакующим: атакующий инициирует отправку юзеру мэйла со ссылкой, а следом – поддельного мэйла с заголовком «ПАРОЛЬ ДЛЯ ВХОДА», в который пихает пароль, который ему известен благодаря твому предложению показывать пароль в браузере.
Юзер идёт по ссылке и вводит там пароль «из второго письма».
Проблема этой схемы в том, что нет никакой явной связи между логинящимся браузером и аутентифицировавшимся юзером.

(третий вариант)
Поэтому пароль надо показывать там, куда юзер придёт по ссылке.
Атакующий инициирует отправку, юзер идёт по ссылке. Там ему говорят: «пароль 1234, введите его в браузер». «Какой ещё браузер?», говорит юзер и на этом всё заканчивается.
От первого варианта это отличается тем, что атакующий не может отправить мэйл, выждать 10 секунд и осуществить попытку ввода. Ему необходимо дождаться пока юзер сходит по ссылке (до этого момента никакой пароль не подойдёт), что существенно ухудшает возможности перебора.
Более того, юзеру по ссылке можно дополнительно показывать кнопку «Зачем же я сюда пришёл?», при нажатии на которую отменять показанный тут же рядом одноразовый пароль и делать выводы о той сессии, в которой была инициирована отправка мэйла.
Если мэйл был инициирован юзером, то юзер его ожидает и знает где использовать показанный пароль.
Открыть мэйл на телефоне, пойти по ссылке, ввести в браузере на другом устройстве полученный короткий одноразовый пароль – вообще не проблема, аналогичные с т.з. юзера процессы приключаются в значительной доле схем MFA.
От второго варианта это отличается тем, что юзер аутентифицирует себя переходом по ссылке из мэйла (предполагается, что никто кроме юзера этого сделать не может) и аутентифицирует правильный браузер вводом в нём одноразового пароля показанного по ссылке, по которой, как указано выше, никто кроме юзера не мог перейти.
Заставить юзера пойти по ссылке и что-то там ввести (как во втором варианте) значительно проще, чем заставить юзера пройти по ссылке и сообщить атакующему чего ему там показали (как в третьем).

Третий вариант можно незначительно улучшить путём добавления показа одноразового пароля в логинящемся браузере (его надо будет ввести по ссылке из мэйла как ты предлагаешь, чтобы получить в ответ пароль для ввода в браузере – вот юзер-то офигеет…).
Надо объяснять почему улучшение будет незначительным?

frob ★★★★★
()
Ответ на: комментарий от ddidwyll

Поддерживаю. А вообще у меня буфер обмена синхронизирован между устройствами и я в таких случаях просто копирую ссылку на одном и вставлятю на другом.

aquadon ★★★★★
()
Ответ на: комментарий от Vit

Если твои юзеры ходят по ссылкам из всего прилетевшего в почту, то хороших вариантов у тебя мало.

frob ★★★★★
()
Ответ на: комментарий от frob

Я же говорю, это мог предложить только полнейший идиот.

Можно начинать перебор.

Беги перебирать короткие цифровые коды от любых сервисов, в том числе банков, приходящих всем в смс сообщении при авторизации и восстановлении аккаунтов. Все что тебе надо знать - это номер жертвы. Озолотишься. Когда выяснишь, что защиту от брутофорса человечество изобрело раньше колеса - прими таблетки.

Остальное даже комментировать не имеет смысла, сплошная шизофрения.

javascript
()
Ответ на: комментарий от javascript

Я подозревал, что ты понятия не имешь о чём говоришь.

«Предчувствия его не обманули!» (с)

frob ★★★★★
()
Ответ на: комментарий от Vit

Чем токены то не устраивают? Пришел новый незалогиненный клиент -> выдал ему токен. Отправил в почту ссылку которая при нажатии на нее изменяет для клиента с этим токеном статус. А на странице логина JavaScript маленький, который редирект сделает после потвреждения.

adn ★★★★
()
Ответ на: комментарий от adn

Отправил в почту ссылку которая при нажатии на нее изменяет для клиента с этим токеном статус.

«юзеры ходят по ссылкам из всего прилетевшего в почту»

frob ★★★★★
()

тред не читал TOTP было?

drsm ★★
()

юзеры сидят за десктопом, смотрят почту на мобилке

Сделал у себя на сайте вход «без пароля»

Зачем? Кто на десктопе вводит пароли руками, а не копирует-вставляет их из какого-нибудь кипасса/блокнотика? (не троллю, правда не понимаю)

the1 ★★
()

вход через google/yandex/facebook и прочие OAuth (и подобные). Человек с мобилки почти гарантировано где-то в них авторизован.

в вашем случае самокостыль через «своей шнягой шлю что-то на почту» гораздо хуже и неудобнее чем ввод пароля. Кривущая дырень в безопасности, принуждающая юзера к лишним движениям

MKuznetsov ★★★★★
()
Ответ на: комментарий от Vit

У меня некоторые юзеры раньше ставили пароли вроде 1976, а ты предлагаешь им про IP рассказывать :).

Откуда ты из пароли знаешь? Хранишь не кешем что ли?

А вообще недавно статистику опубликовали по самым популярным паролям — там половина таких вот 1976 и 1111.

Zhbert ★★★★★
()

Переход по ссылке должен авторизовывать сессию, а не открывать новую. Т.е. ты как бы заходишь без пароля, но доступа у тебя нет пока сессия не подтверждена по ссылке.

u0000
()
Ответ на: комментарий от u0000

The attacker initiates the send, the user follows the link. There he is told: «password 1234, enter it into the browser.» “What other browser?” the user says, and that’s it. This differs from the first option in that the attacker cannot send an email, wait 10 seconds and attempt to enter. He needs to wait until the user follows the link (up to this point, no password will work), which significantly worsens the possibility of enumeration. Moreover, following the link, space bar clicker.

Noradavis
()
Ответ на: комментарий от the1

Кто на десктопе вводит пароли руками

Примерно все. И не только на десктопе, а везде.

javascript
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.