Сложная и бесполезная система авторизации

TheAndrey

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

Для сброса пароля требуется указание логина аккаунта и привязанной почты. Впервые такое встречаю. У меня много аккаунтов на разных ресурсах и десяток почт. И даже я легко могу забыть, какой логин у моего аккаунта и на какую почту я его регистрировал.
В чём смысл такого усложнения? Везде требуется лишь указание логина аккаунта ИЛИ почты для восстановления доступа, а для защиты от роботов ставится капча.

Хорошо, получил письмо, перейдя по ссылке авторизовался в аккаунте. Вижу форму изменения пароля. Ввожу новый пароль, нажимаю кнопку и появляется окно с формой авторизации. Первое, я подумал - меня разлогинило в связи с изменением пароля. Ввожу новый пароль - пишет, неверный. Спустя небольшое время я сообразил, что именно от меня хотят: никакой надписи «Введите свой пароль для подтверждения действия» над формой входа не было.

Наконец, сменив пароль, заинтересовался разделом безопасности в надежде «прокачать» защиту своего аккаунта, ссылка на который присутствует в выпадающей панели пользователя. Первыми моему взору предстали привязка сторонних аккаунтов и смена пароля – здесь ничего полезного я для себя не нашёл. Смотрим расширенный режим: здесь предлагается создать дополнительные пароли, а в качестве дополнительной защиты предлагается ограничение доступа по IP :confused:

В общем, никакой возможности настроить двухфакторную авторизацию не нашёл. Сейчас такая возможность есть практически на всех крупных ресурсах, а функция появилась во многих CMS сайтов (в т.ч. XenForo). TOTP - наиболее надёжный и простой в реализации способ подтверждения входа.

Выводы:
  • Сложное восстановление доступа к аккаунту. Школьникам, которые являются основной аудиторией игры, проще будет создать новый аккаунт.

  • Окно с формой входа, которое непонятно чего от тебя хочет. Можно отказаться от него вообще, а для сохранения безопасности – отказаться от использования сторонних виджетов и трекеров на защищённых страницах (там, где пользователи вводят пароль).

  • Ограничение доступа по IP смогут правильно настроить только системные администраторы. Во-первых, у многих пользователей динамический IP-адрес, ещё провайдеры любят сажать абонентов за NAT для экономии адресов. Во-вторых, даже если динамика, пользователь должен знать все блоки адресов провайдера и как их правильно указывать. В-третьих, понадобится VPN со статическим IP, когда пользователь заходит не из дома (например, мобильный интернет).

  • Простой «угон» чужого аккаунта. Достаточно завладеть логином и паролем. С помощью последнего благополучно подтвердить смену E-mail и прочие действия. Типичный пользователь не станет разбираться во всех этих методах авторизации. Потому система бесполезна.
  • Ключ для лаунчера. Зачем? Смысла, кроме как дать другу поиграть со всего аккаунта, не вижу. Типичный пользователь скорее всего будет хранить его в текстовом документе на рабочем столе. За счёт закрытого кода вашего лаунчера, можно надёжно шифровать пароль/токен от вредоносных программ. Если пользователь скачает стиллер, тот в первую очередь стащит все пароли из хранилища браузера, где присутствует основной пароль от аккаунта :shocked:

  • Странная логика изменения E-mail аккаунта. Подтверждение изменения паролем – это хорошо. Но зачем сразу устанавливать новый адрес без подтверждения? Если я ошибся с адресом, мой аккаунт так останется неактивированным и сбросом пароля не воспользоваться. Что я хочу: адрес должен меняться только после подтверждения нового, а до этого должен быть доступен старый.

Вот к чему приводит изобретение своей защиты. Вместо всей этой лабуды с методами авторизации мне хотелось бы видеть TOTP и GeoIP. Эти средства используют все крупные ресурсы, которые намного чаще подвергаются хакерским атакам. Всё это позволит сделать систему безопасной и в то же время простой в использовании.
  • TOTP – запрос одноразового кода, помимо пароля. Пользователь не сможет хранить код из-за его постоянной изменчивости, а стиллеру невозможно добраться до смартфона пользователя с закрытой ОС.
  • GeoIP – запрос подтверждения входа, если пользователь внезапно зашёл из другого региона/страны (принадлежность IP-адреса). Например, Discord часто любит к этому придираться...
 
  • Like
Реакции: WooDOfficial

makkarpov

Главный администратор
Смысл подхода с логином И почтой - чтобы уменьшить возможность спама письмами, потому что вводить логины наобум я могу, вводить почту я тоже могу, угадать привязку значительно сложнее. В качестве побочного эффекта - значительно сложнее в т.ч. юзеру, да. Раз в пятнадцать минут почту потыкать может и человек, пройдя мимо всех капч.
  1. Да вроде не особо, вводишь почту, вводишь логин - приходит письмо, все, пароль восстановлен.
  2. Опять же, не понятен пункт про "непонятно чего хочет" - вроде действия довольно понятны, хотелось бы конкретики.
  3. Но при желании настроить можно. Не можешь настроить - пожалуйста, не пользуйся.
  4. Да, по сути это однофакторная аутентфикация (пароль сбрасывает почту, почта сбрасывает пароль), как вы верно заметили, из-за того, что оригинальная система для аудитории получилась слишком сложной.
  5. Не сохраняйте пароль в хранилище браузера. Пароль, хранящийся в лаунчере, расшифровать может только сервер аутентификации, а если включить галочку привязки к IP (привязывается /24 блок), то сохраненный пароль становится бесполезен с других адресов полностью, ибо ни расшифровать, ни использовать по назначению не получится.
  6. Согласен, это действительно дельное замечание.
Мы при желании можем хоть аппаратный токен запилить (см. rutoken web, rutoken ecp, JaKarta PKI), код для ГОСТовской криптухи где-то даже валялся, просто это было совсем не в приоритете в силу того, что запроса на это от той же аудитории не было. Насчет GeoIP - на.. зачем, в смысле? Я вам VPN включу не то, что с той же страны, а даже м.б. с точностью до города попаду, если это, конечно, не какой-нибудь Воронеж.

Я в целом согласен, что систему аутентификации неплохо бы отрефакторить, но пока сил на это особо нет. Так что есть, что есть.
 

TheAndrey

Новичок
  1. Какой спам? Никому оно не нужно. Стоит оставить только поле для ввода почты. Поспамить нужному пользователю будет сложно - нужно знать его почту. Почты никто "тыкать", кроме самого пользователя в поисках заветной не будет.

  2. Вот например, если менять пароль в настройках, выскакивает авторизация.
    upload_2019-9-17_10-56-50.png

    А вот как должно выглядеть правильное подтверждение:
    upload_2019-9-17_11-2-42.png

    Почему просто нельзя сделать все три поля для изменения пароля?

  3. Типичный пользователь согласится с любезным предложением браузера сохранить пароль. Банальный фишинг работает тоже неплохо. Привязкой IP большинство пользоваться не могут, потому что провайдер может выдать IP из другого блока адресов. Тут надежда только на IPv6, но не все провайдеры спешат его вводить...
Мы при желании можем хоть аппаратный токен запилить
Для защиты аккаунтов администрации - нужная вещь, а типичный пользователь не побежит его покупать. Проще использовать то что есть у всех - смартфон.
 
  • Like
Реакции: WooDOfficial

Gaknes

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

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

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

При этом да, есть вариант более удобной (для игроков) реализации, и когда-нибудь мы его внедрим.


А вот как должно выглядеть правильное подтверждение
С этим мы согласились ещё вчера, тогда же задача была добавлена в трекер.


Типичный пользователь согласится с любезным предложением браузера сохранить пароль. Банальный фишинг работает тоже неплохо. Привязкой IP большинство пользоваться не могут, потому что провайдер может выдать IP из другого блока адресов. Тут надежда только на IPv6, но не все провайдеры спешат его вводить...
Реальность такова, что невозможно обеспечить полную безопасность для тех пользователей, которые к ней не стремятся (а в большинстве случаев так оно и есть), хотя мы стараемся приблизиться к этому идеалу.

Какие меры бы не вводились, всегда либо будет потенциальная уязвимость (сохранение паролей в браузере, кейлоггеры, разнообразные вирусы и мошенническое ПО), либо наши сервисы станут неудобными для людей, когда против их воли на каждый чих спрашивается SMS/Email/etc-подтверждение. Потому мы исходим из логики, что для большинства выбираются наименее параноидальные параметры, а ценители (при желании) могут подключить себе что-то более злобное.

Примерный сетап последнего при текущих функциях выглядит так:
  • Никакого пароля, вместо него ключ для входа в игру, один раз скопированный и навсегда сохраненный в лаунчере (в случае утраты генерируется новый)
  • При необходимости (и возможности) ключу задаются диапазоны IP-адерсов, которые можно запросить у своего провайдера или найти в интернете
  • Вход на сайт и подтверждение действий только через Вконтакте/Telegram/Email
  • Для всех привязанных аутентификаторов (Вконтакте/Telegram/Email/etc) параноидальные собственные настройки: серьезные пароли, двойная аутентификация, оповещение о входе и так далее
Плюс соблюдение элементарных правил безопасности, вроде «не пытайтесь запускать читы на своём ПК».
 
  • Like
Реакции: WooDOfficial
А вот как должно выглядеть правильное подтверждение:
Посмотреть вложение 3963
С этим мы согласились ещё вчера, тогда же задача была добавлена в трекер.
Может, я немного не понял, но если подтверждение будет выглядеть 'правильно', то, не имея пароля, почту сменить не выйдет.
А т.к. отсутствие пароля является методом защиты аккаунта, и зачастую используется многими 'параноиками', для смены email придется его временно создать. Вопрос: зачем?
 

Gaknes

Бывший главный администратор
Может, я немного не понял, но если подтверждение будет выглядеть 'правильно', то, не имея пароля, почту сменить не выйдет.
А т.к. отсутствие пароля является методом защиты аккаунта, и зачастую используется многими 'параноиками', для смены email придется его временно создать. Вопрос: зачем?

Подтверждать действия (вроде смены Email) можно и без пароля, через те же Вконтакте, Telegram, Email и так далее
 

tolek

Игрок
Я так и не догнал как врубить двухфакторку, если я перешел в инкогнито и по сохраненному паролю в браузере спокойно вошел в аккаунт.
Неужели Гугл Аутенф так сложно / противно?
 

tolek

Игрок
Удаляешь/отключаешь все возможности авторизации(в том числе и пароль), оставляешь только вк.
Настраиваешь двухфакторку в вк.
Profit
лично мне не позволяет религия использовать ВК. Телега и гугл аутенф - окей, вк - фе.
 

Gaknes

Бывший главный администратор
Можно использовать Telegram вместо Vk. Никто не запрещает.
 
Я мож чего-то не догоняю, но почему нету "Включить двухфакторную авторизацию"?
http://i.prntscr.com/q78H2nzkQQGMTnXQu3t5hQ.jpeg
Повторим последовательность действий, но уже для телеграма и конкретно для тебя:
  1. Заходишь на https://hil.su/security/adv
  2. Удаляешь пароль
  3. Заходишь в настройки Google-аккаунта и настраиваешь там двухфакторную авторизацию
  4. Заходишь в настройки Telegram-аккаунта и настраиваешь там двухфакторную авторизацию
  5. Profit
Подсказка: последующие входы выполнять только через гугл / телеграм, вход в игру через ключ для лаунчера, который можно создать в тех же настройках безопасности аккаунта.
 

tolek

Игрок
Повторим последовательность действий, но уже для телеграма и конкретно для тебя:
  1. Заходишь на https://hil.su/security/adv
  2. Удаляешь пароль
  3. Заходишь в настройки Google-аккаунта и настраиваешь там двухфакторную авторизацию
  4. Заходишь в настройки Telegram-аккаунта и настраиваешь там двухфакторную авторизацию
  5. Profit
Подсказка: последующие входы выполнять только через гугл / телеграм, вход в игру через ключ для лаунчера, который можно создать в тех же настройках безопасности аккаунта.
не понимаю смысл разделения на ключ для лаунчера и гугл аутенфикатор, когда можно и в лаунчере сделать двухфакторку.