Вашим пользователям не нужны пароли

    Rusty lock


    Зачастую, одно из первых архитектурных решений, принятых в начале разработки вашего сайта — будет использование email + password для авторизации пользователя. Эта связка прочно засела в наши головы, и мы уже на задумываемся, зачем мы заставляем людей придумывать пароль. Мы привыкли так делать.


    Но давайте подумаем, возможно, вашим пользователям не нужны пароли.


    Одно из возможных решений, это использовать OAuth 2.0, но не у всех пользователей может быть аккаунт в социальной сети и желание его использовать на вашем ресурсе.


    Но как-же тогда избавиться от пароля? На этот вопрос, я и попробую ответить в статье.


    А в чем проблема?


    Единственный защищенный пароль — это тот, который вы не в силах запомнить.

    Troy Hunt

    Сам по себе пароль уже является проблемой. Он не выгоден, ни вам, ни вашим пользователям.


    Для владельца сайта пароль не выгоден тем, что его хранение создает дополнительную уязвимость в системе. Каким бы сильным ни был ваш хеширующий алгоритм (и упаси вас господь, не использовать его) рано или поздно он станет пустяком для новых GPU, а в последствии и CPU. А если ваша база данных утечет в сеть, то это нанесет колоссальный удар по вам и вашим посетителям. Без паролей же база становится в разы менее лакомой добычей.


    Для посетителей вашего сайта, пароль — это дополнительные трудности. Неопытные пользователи будут лишний раз использовать свой "обычный" пароль, повышая риск потерять его. А продвинутые пользователи будут вынуждены придумывать специальный пароль для вашего сайта или пользоваться менеджером паролей.


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


    Помимо этого, вы можете дополнительно отравить жизнь вашим пользователям, заставив их периодически менять их, или запретить / заставить использовать специальные символы.


    Как же быть?


    Ответ — не использовать пароли. Вам достаточно знать только email пользователя.


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


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


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


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


    Решение


    Рассмотрим пример простого сайта с PostgreSQL в качестве базы данных.


    Нам будет достаточно двух таблиц (с минимальным набором полей):


    users:


    Имя поля Тип данных Атрибуты
    id serial PRIMARY KEY
    email varchar(320) UNIQUE

    sign_in_requests:


    Имя поля Тип данных Атрибуты
    id serial PRIMARY KEY
    email varchar(320)
    token uuid UNIQUE
    request_ip varchar(45)
    activated_at timestamp NULLABLE
    expired_at timestamp

    Несколько комментариев на счет таблиц:


    • Таблица sign_in_requests может (и должна) быть общей с "Sign Up" таблицей, т.к. в этой системе их роль идентична.
    • Исходя из пункта выше, в sign_in_requests отсутствуют внешние ключи, а поле email дублируется.
    • token не обязан быть uuid'ом, вы можете сделать и более короткие токены, которые можно даже ввести вручную. Но в этом случае вероятность коллизии и его надежность могут значительно ухудшиться.
    • request_ip — опциональное поле, используется только для rate limit'а, или дальнейшего выяснения причин.

    Процесс авторизации весьма прост:


    1. Пользователь вводит свой email и делает запрос.
    2. Вы генерируете sign_in_request, и высылаете на почту пользователя ссылку вида: https://example.com/signin/callback/email/{{token}}.
    3. Пользователь, перейдя по этой ссылке делает запрос к вашей базе на наличие такого token'а.
    4. Если такой токен есть, он не просрочен, не использован, и он последней с таким email (опциональная защита от Brute Force), то считаем, что все хорошо.
    5. Выставляем activated_at=now(), чтобы предотвратить множественное использование токена.
    6. Далее, все так-же, как и в системе с паролями, вы можете дать пользователю cookie / JWT / etc.

    В качестве защиты от спама письмами, можно сделать рейт лимит, или не высылать письмо чаще чем раз в 10 минут.


    Для кого?


    Кому стоит использовать данную технику:


    • Подавляющему большинству сайтов в интернете, в том числе блогам / новостным сайтам / форумам.
    • Корпоративным сайтам, где ваши пользователи уже используют вашу внутреннюю почту.
    • Сервисам, который используется периодически, но не часто: сайт интернет провайдера / оплата услуг на месяц.

    И не стоит использовать данную технику:


    • Когда вы сами являетесь email сервисом.
    • Ваш основной клиент — это мобильное приложение / Smart TV / IoT. В этом случае, возможно, стоит оставить опциональную возможность использования пароля.

    Финальные слова


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


    Источник изображения: https://pixabay.com/en/padlock-grunge-rusty-rusting-76866/
    Поделиться публикацией

    Комментарии 502

      +2

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

        +16

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

          +9
          Если у вас предусмотрен сброс пароля, считайте у вас и нет нужды в нем.

          Сброс пароля бывает не только через почту.


          А еще есть разница между "открыть сайт, нажать кнопку ввода пароля, войти" и "открыть сайт, нажать кнопку, пойти в почту, нажать ссылку, войти".

            0

            Бесспорно, этот путь длиннее. Но если на сайте достаточно длинные сессии, то, думаю, это может нивелировать данный минус.

              +1
              Но если на сайте достаточно длинные сессии, то, думаю, это может нивелировать данный минус.

              Не может. Все равно необоснованно много операций ради чего?

                +5

                Ради отказа от бесконечного количества паролей и их менеджеров. Просто другой путь.

                  0

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

                    +2

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


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

                      0
                      Что вы понимаете под менеджментом пароля для почты? Я говорил о программах-менеджерах, которые генерируют и хранят ваши пароли от учетных записей.

                      Вот про это я и говорю. Пароль от почты же тоже надо где-то хранить; особенно учитывая, что это не единственный пароль, который надо хранить. Так что менеджер все равно нужен. А если он есть, то уже не важно, сколько паролей хранить.

                        0

                        Сомнительно, я спокойно запомнил все пароли от своих email'ов, хоть они и сгенерированны. Это был лишь вопрос времени.


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


                        Но оба подхода не спасут ни от стикера на мониторе, ни от masha123456.

                          +1
                          Сомнительно, я спокойно запомнил все пароли от своих email'ов, хоть они и сгенерированны. Это был лишь вопрос времени.

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


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

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

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

                            Да я и не думаю так, но так есть хоть какая-то надежда обезопасить такого гражданина.

                              +2

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

                                0

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

                                  –2

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

                                    +4

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


                                    А практика с "ваш пароль недостаточна сильный", я считаю одним из проявлений садизма.

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

                                      Пусть дергает. Это лучше, чем потеря критических данных.


                                      А практика с "ваш пароль недостаточна сильный", я считаю одним из проявления садизма.

                                      Если вы можете себе позволить выдавать каждому пользователю (безотказное) устройство генерации одноразовых кодов с биометрической аутентификацией — то можете не ограничивать сложность паролей. А иначе вам как-то придется бороться со слабыми паролями.


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

                                        +3
                                        Пусть дергает. Это лучше, чем потеря критических данных.

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


                                        А иначе вам как-то придется бороться со слабыми паролями.

                                        А зачем, пользователь все равно найдет как его "подарить".


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


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


                                        Если вы не против, продолжим завтра.


                                        А пока, хорошего воскресения, и добрых снов :).

                                          –1
                                          А иначе вам как-то придется бороться со слабыми паролями.
                                          А зачем, пользователь все равно найдет как его "подарить".

                                          То есть ваш подход — это всего лишь прикрытие собственной задницы перед начальством или заказчиком, когда поломают вашего пользователя, — мы не виноваты, пользователь проэ… мотал не наш пароль, а почтовый.
                                          Не решение проблемы, а просто спихивание ответственности.

                                            –1
                                            Очень спорное высказывание, т.к. зависит от множества факторов.

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


                                            А зачем, пользователь все равно найдет как его "подарить".

                                            Чтобы избежать тривиальных ошибок.

                                            +3
                                            Пусть дергает. Это лучше, чем потеря критических данных.

                                            Да, помню эту историю.


                                            Чувак потом рассказывал что он потерял фотографии своей дочки из-за того что кто-то сумел уболтать саппорт и получить доступ к его эпловой учётке.

                                          –2
                                          Хочется верить, что с таким подходом и пользователям искренне пофиг на вас и наш сервис, чего бы вы там ни предоставляли.
                          0
                          Пользователям у которых много разных email аккаунтов всё равно придется запоминать или записывать связку url -> email. Конечно это проще чем url -> email / password, но все равно менеджер может еще понадобится.
                            0
                            Возможно, это сократит колличество паролей. Но Вы, видимо, подразумеваете, что почтовый клиент у пользователя забирает почту без необходимости ввода пароля. Если же нет, то человеку нужно будет пройти дополнительные шаги авторизации в почте.
                            Если же ориентироваться на длинную сессию в почте, то такой же подход можно применить и на сайте.
                            У нас на одном из сервисов сессия сохраняется более суток и подавляющему большинству пользователей не приходится часто вводить пароли.
                            Такой подход, возможно, больше подходит для временных аккаунтов или там, где нет необходимости в регистрации.
                          0
                          Этот путь не просто длиннее, он сложнее. Вам надо ещё и сделать свой сайт настолько интересным пользователю, чтобы более сложная аутентификация не отбила желание пользоваться вашим сервисом/ресурсом. Благо, у вас скорее всего будут конкуренты без этих хлопот.
                          Вы же забываете, что пользователю в общем случае не сложно придумать и потом вводить пароль. И не сложно его запомнить. Знаете почему? Потому что пароль к вашему сайту у него в подавляющем большинстве случаев будет такой же, как и ко всем другим аналогичным сайтам, и вполне вероятно, к его почте и онлайн-банкингу. А вы вместо того, чтобы вводить привычное слово, предлагаете пользователям квест «зайди в почту, найди наше письмо, открой письмо, перейди по ссылке. И желательно потом не забудь удалить письмо»
                        +3
                        Понимаете, с одной стороны — ваша мысль интересна. С другой — неудобна. очень неудобна. Если, допустим, я каждый раз буду вынужден делать ЛИШНИЕ движения в виде проверки почтового ящика, для авторизации на каком-то ресурсе, то я просто через некоторое время перестану им пользоваться. Люди вообще ленивы сами по себе (отсюда и пульты управления бытовой техникой), поэтому любое лишнее движение будет воспринято отрицательно. Тем не менее было бы интересно провести где-то эксперимент и посмотреть на результаты.
                          +2
                          Вечные куки в большинстве случаев решат проблему :)
                          Сервисы, любящие ставить куки на две недели, это отдельная беда, конечно.
                            0
                            Что-то мне подсказывает, что можно (нужно и стоит) при использовании такой схемы оставить пользователю в профиле тычку/галку/слайдер вида «Помнить меня день/неделю/месяц/год/до посинения»
                              0
                              Это Вы не видели игру The Settlers Online — она разлогинивается через пару часов!

                              Хотя вечные куки — это проблема на компьютере коллективного пользования.
                                0

                                А какая разница будет кука на 15 минут или на 100 лет, если через минуту за комп может сесть другой человек? Для девайсов коллективного пользования должна быть хорошо заметная кнопка "выйти".

                                  0
                                  Ну, есть же правильное решение: кука существует до закрытия браузера. Закрыл браузер = разлогинился автоматически.
                                    0

                                    Очень не удобно на девайсе личного пользования.

                                      +1
                                      Ну так это надо оставить на усмотрение пользователя. Но по умолчанию д.б. «до закрытия браузера».
                                      И этот выбор должен настраиваться так, что при заходе с нового устройства надо заново выставить опцию «хранить куки и после закрытия браузера». А по умолчанию на каждом новом устройстве куки хранятся до закрытия — независимо от того, какой выбор я делал на других устройствах, где работал раньше.
                            +1
                            Электронная почта это много независимых почтовых серверов + набор необязательных к исполнению соглашений — доставка отдельно взятого письма вообще никем и никогда не гарантируется, оно может уйти в /dev/null по дороге, доставка задержаться, упасть в спам и тп, для реализации вашей же идеи необходима идеально работающая почта.
                            +3
                            А уже нечто похожее например сайт издательства МИФ использует.
                              0
                              На сайте Бюро Горбунова аналогичная система. Вообще на таких сервисах это реально удобно, деструктивных действий практически нет (нельзя удалить аккаунт, перевести миллион денег на произвольный счет и так далее). Ну зайдет кто-то на МИФ, ну почитает мои книги. Карточка у меня виртуальная, купить с нее человек ничего не сможет, пока я сам туда не положу деньги.
                                +1
                                Western Union использует примерно то же через SMS. Для логина вводишь номер телефона, приходит код в SMS, вводишь его. Никаких паролей.
                                В целом неплохая система как мне кажется, а раз уж такая крупная и связанная с деньгами компания ее использует — это повод как минимум подумать и посмотреть на нее внимательнее.
                                  –5
                                  неплохая

                                  ага XD

                                  раз уж такая крупная

                                  ага XDXDXDXD
                                    0
                                    Компания из Fortune 500 для вас недостаточно крупная?
                                      +1
                                      Пароли через СмС не очень секьюрное решение, т.к. добавляется еще одна цепочка которому мы должны доверять — оператор сотовой связи. Я точно не помню, но по-моему передача смс не зашифрована, поправьте меня если я не прав.
                                      Плюс СмС перехватить можно.
                                      Но это если уже совсем ударяться в паранойю.
                                        0
                                        и дубль симки сделать можно(были случаи и неединожды)
                                          0
                                          вы и так доверяете оператору свои деньги, неужели доверить еще и временный пароль от социалочки такая проблема?
                                            +1
                                            вы и так доверяете оператору свои деньги

                                            250,42 рублей баланса?
                                              0
                                              и что, 250р уже не деньги?

                                                0
                                                По большому счёту да, один поход в магазин дороже обходится, некоторым аккаунт от соцсети дороже.
                                              0
                                              Я вот, например, со своим постоплатным тарифом не доверяю. Даже когда и доверял, количество денег на балансе телефона было на 3-4 порядка меньше типичного баланса карт.
                                            +3
                                            Намекается, что если компания крупная, это совсем не значит, что система у неё хорошая. Чаще бывает наоборот — компания либо ещё что-то очень крупное, но сделано что-то чуть ли не самым плохим вариантом.

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

                                            Хотя если отслеживается перевыпуск карты, уже не совсем ужасная защита (без этого это даже защитой нельзя считать в принципе, т. к. защита минимальна), но всё-равно, это явно не то решение, на которое нужно равняться.

                                            За что мне поставили 4 минуса — не понимаю. Видимо, нужно было лучше объяснить.
                                      –1

                                      Тогда надо использовать облако.

                                      +5
                                      Не знаю, на сколько это будет удобно, лично мне не очень хочется за каждой рабочей машиной заходить на почту. А на работе в день по несколько раз приходится менять компы.
                                      Интересная идея сделать как в мессенджерах, через смс, но это дорого, как я понимаю.
                                        0

                                        В целом, никто не мешает слать временны пароль на почту пользователю. Но тогда TTL такого запроса должна стать в разы короче, либо нужно будет сделать лимит на попытки ввода токена.


                                        А СМС, да они в разы дороже, чем отправка письма.

                                          0

                                          смс менее защищенные чем email (например к ним имеют доступ те же гос. спец. службы). Так что если делать привязку через телефон то какой-нить Authy.

                                            0
                                            почему в смс высылают полную часть кода а не половинку, одну половинку показывают например на сайте а вторую в смс которую надо ввести
                                              +4

                                              Потому что атакующий, который запросил СМС, смотрит на тот же самый сайт.

                                          +13

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


                                          (я уж молчу о том, что я не на каждом сайте хотел бы светить свой емейл)

                                            –5

                                            А разве входя через email + password, вы не светите email?

                                              +3

                                              А разве я обязан вводить там реальный емейл?

                                                –1

                                                Некоторые сервисы не пустят вас, пока вы не подтвердите email. Следовательно, не войдя в него, вы не сможете этого сделать.

                                                  +6

                                                  Ну так одноразовые емейлы же для этого и придуманы.

                                                    –5

                                                    А что мешает использовать одноразовый Email в этой схеме?

                                                      +11

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

                                                        +1

                                                        Согласен, если вы намерены использовать этот аккаунт долгое время, то потеря доступа к email, повлечет и потерю аккаунта.


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

                                                          0
                                                          Хотя, если вы намерены использовать этот аккаунт долгое время, то потеря доступа к email (а временная почта это и подразумевает), повлечет и потерю аккаунта.

                                                          Почему?


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

                                                          Вы же предлагаете свой подход не только "для важных учеток", а везде?

                                                            +3
                                                            Почему?

                                                            "Почему" потеряете доступ? Я не совсем понял этот вопрос.


                                                            Вы же предлагаете свой подход не только "для важных учеток", а везде?

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

                                                              0
                                                              "Почему" потеряете доступ? Я не совсем понял этот вопрос.

                                                              Да, почему может случиться потеря эккаунта.


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

                                                              … ценой понижения безопасности и удобства. Спасибо, но, как говорилось выше, нет.

                                                                +2
                                                                Да, почему может случиться потеря эккаунта.

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


                                                                … ценой понижения безопасности и удобства

                                                                А чем, помимо возможности использования одноразовых email, этот вариант менее безопасный?

                                                                  0
                                                                  Почта протухнет, следовательно вы не сможете выслать на нее письмо с ссылкой на вход

                                                                  Вы про свою систему говорите, или про существующие?


                                                                  А чем, помимо возможности использования одноразовых email, этот вариант менее безопасный?

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

                                                                    –1
                                                                    Вы про свою систему говорите, или про существующие?

                                                                    Да я все, про описанную систему выше говорю.


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

                                                                    Да, но не большая, чем зайти даже с временной почтой и паролем.


                                                                    А временные пароли по СМС / Google Authenticator / прочие 2fa могут решить эту проблему с почтой.


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

                                                                      0
                                                                      Да я все, про описанную систему выше говорю.

                                                                      В вашей системе — да, так работать не будет. И это большая проблема.


                                                                      Да, но не большая, чем зайти даже с временной почтой и паролем.

                                                                      Эм, вы не с тем сравниваете. Сравнивать надо "мы зашли на сервис, введя почту (в худшем случае) и пароль от этого сервиса" с "мы зашли на сервис, введя почту и пароль от почты".


                                                                      А временные пароли по СМС / Google Authenticator / прочие 2fa могут решить эту проблему с почтой.

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


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

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

                                                                        +1
                                                                        Чужой компьютер позволяет воспользоваться открытой сессией для разных странных нужд.

                                                                        Элементарные правила безопасности никто не отменял. Режим инкогнито, выход из аккаунта — для кого это всё? Есть сомнения в чистоте компьютера (кейлоггеры и т.п.) — найдите другой.
                                                                          +1
                                                                          Режим инкогнито, выход из аккаунта — для кого это всё?

                                                                          Это все не помогает, если компьютер скомпрометирован.


                                                                          Есть сомнения в чистоте компьютера (кейлоггеры и т.п.) — найдите другой.

                                                                          Зачем мне это усложнение, если я не настолько дорожу данными сервиса, в который логинюсь?

                                                                            +4
                                                                            Мужик, если компьютер «скомпроментирован», то либо ты странный (вот на «скомпроментирован»'ном компьютере тебе не чего не поможет, чес слово такой бред несёте !), либо ты думаешь, что пароль и почта, и более того тут говориться о менеджерах паролей, не помогут! Как ты блин собираешься в кафе авторизоваться, когда у тебя все пароли в менеджере?
                                                                            Говоришь надо всё равно логиниться через почту? А когда это у нас общественные компа, да и любые другие, кроме своего, стали вдруг безопасными?
                                                                            P.s. не то чтобы я не доверяю любым компам, но как минимум используют режим инкогнито и отключаю всякие куки и все свои учётки активирую с помощью смс на телефон, но я это могут делать и без пароля! А идея замены на сообщение на почту как одна из функций мне лично нравится, особенно когда я сижу дома и мне лень тянуться до телефона!
                                                                              +2
                                                                              Как ты блин собираешься в кафе авторизоваться, когда у тебя все пароли в менеджере?

                                                                              Легко и просто: открыл менеджер на телефоне, вбил пароль в компьютер.


                                                                              Говоришь надо всё равно логиниться через почту?

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

                                                                                +1
                                                                                Ну не логинься! Кто-то запрещает? Автор статьи говорил не про замену для всех, а для тех кому эта фича полезна, тому кому лень постоянно вводить пароль!
                                                                                Для сравнения, сейчас ни кто ни заставляет вас использовать для входа смс подтверждение через телефона, но фича то есть!
                                                                                Да и как по мне это удобнее чем смс на телефон, в том отношении, что я и так сижу за компом в браузере, открыть почту и посмотреть код, как например это сделано в том же Steam, не так уж и затратно по времени! А вот брать телефон, скорей всего у вас тоже так, снимать блокировку, открывать сообщение и потом вводить этот код ручками…
                                                                                Полезность каждый определяет для себя сам, но как минимум — это полезная фича =)
                                                                                  0
                                                                                  Ну не логинься! Кто-то запрещает?

                                                                                  Автор, который утверждает, что пользователям не нужны пароли.


                                                                                  Для сравнения, сейчас ни кто ни заставляет вас использовать для входа смс подтверждение через телефона, но фича то есть!

                                                                                  Вы, видимо, не слышали про принудительную двухфакторную аутентификацию в онлайн-банках?

                                                                                    0
                                                                                    Автор, который утверждает, что пользователям не нужны пароли.

                                                                                    Всем? Автор может так и считает, но я нет. Для меня это просто полезная фича в некоторых сервисах =)
                                                                                    Вы, видимо, не слышали про принудительную двухфакторную аутентификацию в онлайн-банках?

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

                                                                                    То есть ваш банковский счёт для вас это несерьёзно? Можете пояснить или я не понял, вы вроде писали, что логинетесь на сервисы данными на которых вы не дорожите, тогда зачем сейчас говорить про онлайн банки? Добавлю, что приложения на телефоне (банкинг) не плохо так защищает!!! В принципе заходите через браузер компа почти не нужно! Могу ошибаться, т.к. не пользуюсь пока!
                                                                                      0
                                                                                      Всем?

                                                                                      Статья написана так, как если бы всем.


                                                                                      Серьёзно? То есть имея приложения для банкинга вы полезете на свой личный кошиль через хрен пойми как защищённый комп?

                                                                                      Серьезно. Не подменяйте контекст, вы написали "никто не заставляет использовать смс-подтверждение" — я вам привел пример (и их много) сервисов, которые заставляют. Я вам больше того скажу, иногда приходится именно так и делать (потому что приложение для банкинга должно где-то стоять, а у этого "где-то" может не быть интернета), и вот как раз здесь принудительное подтверждение каждой операции очень помогает.


                                                                                      Можете пояснить или я не понял, вы вроде писали, что логинетесь на сервисы данными на которых вы не дорожите, тогда зачем сейчас говорить про онлайн банки?

                                                                                      Да ровно потому, что единственное, что можно украсть, когда я зашел в (хорошо сделанный) онлайн-банк — это информацию о том, где и сколько у меня денег и историю транзакций. Провести операцию без моего ведома нельзя (или очень сложно). Хотя, впрочем, я предпочту этого не делать, конечно.


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

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

                                                                                        –1
                                                                                        Не подменяйте контекст, вы написали «никто не заставляет использовать смс-подтверждение» — я вам привел пример (и их много) сервисов, которые заставляют.

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

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

                                                                                        Ездил не заграницу, а по России пользовался нормально. Понимаю, что Россия != Заграница, но разве нельзя купить сим-карту? Извините, но мне кажется вы тяните проблемы, которые решаются.
                                                                                        Если говорить о логине в банк, то вы предоставляете, скорей всего почту и пароль. Вернусь, вы всё равно подставляете важные для вас данные!
                                                                                        Я бы купил в аэропорту сим-карту или почитал в сети как обстоят дела с интернетом в той стране в которую лечу!
                                                                                        Да насчёт организованности банкинга, я вам полностью согласен. Данные передаются зашифрованными и боятся, что кто-то получит к ним доступ, не нужно, т.к. другого способа защиты попросту нет =)
                                                                                        P.s. Вообще есть =) Наличные деньги в сумке или потайном кармане всегда безопасней карты =)
                                                                                          0
                                                                                          Во-первых не подменяю, т.к. мы с вами говорили о сервисах, данные которых для вас не важны, с этого я и начал!

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


                                                                                          Ездил не заграницу, а по России пользовался нормально. Понимаю, что Россия != Заграница, но разве нельзя купить сим-карту?

                                                                                          Не везде можно. Не везде есть покрытие. Иногда просто жалко денег.


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

                                                                                          Нет, конечно. Уникальный идентификатор (в ВТБ24 — вообще цифровой) и пароль.


                                                                                          Я бы купил в аэропорту сим-карту

                                                                                          У вас много лишних денег? Ну вот купили вы сим-карту, залезли в Porthcarno, а там хрен вам, а не мобильное покрытие. А вот проводочек протянут.


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

                                                                                          Очевидно, нет. Объяснять надо?

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

                                                                                          Если не секрет, что это за интернет-кафе такое, где нет возможности подключить смартфон по вайфаю?

                                                                                            0

                                                                                            Обычный принт-шоп в Севилье, неподалеку от Архива Индий.

                                                                                              0

                                                                                              Ну вот мой пример: перед походом в принтшоп в Петрозаводске, я залил нужный мне файл на флэшку и в интернет.


                                                                                              Придя в принтшоп я просто продиктовал адрес и они скачали мой файл. Флэшка не понадобилась.


                                                                                              Вводить какие либо пароли на их компьютерах — не понадобилось.


                                                                                              А какой Ваш кейс, если не секрет?

                                                                                                0

                                                                                                Ниже уже описал. Отличие от вашего в том, что файл не был публично доступен, поэтому я не мог продиктовать адрес.

                                                                                                  0
                                                                                                  файл не был публично доступен

                                                                                                  А почему?


                                                                                                  У Вас же, по Вашим словам, есть большой опыт в таких делах.


                                                                                                  Почему Вы не подстраховались?

                                                                                                    0
                                                                                                    У Вас же, по Вашим словам, есть большой опыт в таких делах.

                                                                                                    В каких?


                                                                                                    Почему Вы не подстраховались?

                                                                                                    Потому что не счел необходимым.

                                                                                                      0

                                                                                                      Ну то есть, в качестве примера Вы используете случай "пользователь профакапил"?

                                                                                                        0

                                                                                                        Нет, я использую случай "на это не рассчитывали".

                                                                                                        0
                                                                                                        В каких?

                                                                                                        Пребывание в местах со специфической ситуацией в плане интернета.

                                                                                          0
                                                                                          Автор, который утверждает, что пользователям не нужны пароли.

                                                                                          Видимо мы не знакомы с автором, ведь я в начале статьи явно сказал "возможно не нужны", а в конце развернуто перечислили кому эта функция могла бы быть полезна, а кому напротив.

                                                                                            0
                                                                                            Видимо мы не знакомы с автором, ведь я в начале статьи явно сказал "возможно не нужны",

                                                                                            Заголовок статьи же.


                                                                                            в конце развернуто перечислили кому эта функция могла бы быть полезна

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


                                                                                            (да и API сейчас тоже есть много у кого)

                                                                                    0
                                                                                    Вы самому себе противоречите. Если вы не дорожите — какая разница, скомпрометирован ли компьютер. И входя через Auth вы как раз меньше рискуете, т.к. логгер запишет временный код.
                                                                                      0
                                                                                      Если вы не дорожите — какая разница, скомпрометирован ли компьютер.

                                                                                      Я не дорожу данными сервиса, куда логинюсь с общего компьютера, но дорожу почтой.


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

                                                                                      Через OTP — да, меньше рискую. Но речь в примере шла не про OTP, а про логин через почту.

                                                                                        0
                                                                                        Тут соглашусь :) Через почту не вариант.
                                                                          +1
                                                                          Да, почему может случиться потеря эккаунта.
                                                                          Email это ключ к восстановлению пароля. Если вы при регистрации использовался «одноразовый email», то восстановить пароль в случае утери будет не возможно.
                                                                          Кроме того часть функционала сайта может быть не доступна без доступа к электронной почте (рассылки, уведомления и т. д.).
                                                                            0
                                                                            Email это ключ к восстановлению пароля. Если вы при регистрации использовался «одноразовый email», то восстановить пароль в случае утери будет не возможно.

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


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

                                                                            Это меня тоже может не волновать.

                                                                              –1
                                                                              Ну и пофиг, я вполне способен сам следить за своими паролями.
                                                                              Это меня тоже может не волновать.
                                                                              Охотно верю. Но ведь статья не про вас.
                                                                                0

                                                                                А про кого?

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

                                                                он наверно имеет ввиду сервисы которые генерируют временные ящики на 10 минут и тем самым он юзает их для регистрации не светя свой настоящий email.


                                                                и второй раз получить к тому же временному email очень мало вероятно

                                                            +2
                                                            Все популярные почтовые сервисы доступны только через HTTPS.
                                                              +1
                                                              Интернет-кафе, это не только доступ к интернету, но и чужой компьютер, которому вы не можете доверять… Никакие HTTPS не помогут на чужом устройстве.
                                                                0

                                                                Мне кажется, эта проблема решилась сама собой пару лет назад, когда в каждом кофе появился Wifi.

                                                                  0

                                                                  Далеко не в каждом, если вы посмотрите по всему миру. А уж если вам что-то напечатать надо, так и еще веселее.

                                                                    0
                                                                    После введения «WiFi по паспорту» некоторые кафе перестали раздавать WiFi
                                                                      0
                                                                      Да уж, как появился, так и исчез…
                                                                        0
                                                                        После повсеместного распространения LTE посетители просто перестали обращать на это внимание.
                                                                          0

                                                                          Повсеместное распространение LTE в любой стране пребывания — это тоже не так просто, как кажется.

                                                                    0

                                                                    Для чужого компьютера это не имеет значения.

                                                                    0
                                                                    я уж молчу о том, что я не на каждом сайте хотел бы светить свой емейл

                                                                    Светить username+spamsite112@gmail.com и получать по факту почту на username@gmail.com не подходит под это описание?

                                                                      0

                                                                      Не подходит. Во-первых, не у всех гмейл (а у тех, у кого гмейл, есть OpenId Connect, и им вся эта фигня с логином через емейл не нужна бы), а во-вторых, это все равно позволяет связать ящики.

                                                                        0

                                                                        Sendmail такое из коробки поддерживает, вроде как — так что привязки к Gmail особой нет. А про связь ящиков — тут уж смотря какие цели. Если цель — увести основное никому не известное мыло от направленной атаки — тогда да. Но и в таком случае можно создать ширпотребный ящик и использовать теги уже на нём :)

                                                                          0

                                                                          Цель — не светить свою идентичность и усложнить связь учеток на разных сервисах друг с другом.

                                                                            0
                                                                            Интересно: тут либо на каждый сервис/сайт регистрировать свою почту, чтобы «усложнить связь учеток на разных сервисах друг с другом», но это быстро надоест, а более способов я не вижу, а один E-mail уже свяжет так и так учётки между собой. Либо если сайт требует регистрацию по мобильному номеру, то как тут быть?
                                                                              0
                                                                              Интересно: тут либо на каждый сервис/сайт регистрировать свою почту, чтобы «усложнить связь учеток на разных сервисах друг с другом», но это быстро надоест

                                                                              Если надоест, значит не так уж и важно.


                                                                              Либо если сайт требует регистрацию по мобильному номеру, то как тут быть?

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

                                                                      0

                                                                      На самом деле есть вариант объединить преимущества обоих подходов:
                                                                      1) При регистрации попросить-таки придумать пароль, как обычно
                                                                      2) При логине требовать емейл
                                                                      3) Дальше предлагать либо ввести пароль либо подтверждение на почту
                                                                      Все старые юзкейсы работают, но если обычный пользователь забыл пароль или не хочет париться его вспоминать-вводить, пользуется подтверждением.

                                                                        +1

                                                                        Чем это (радикально) отличается от обычного "сброса пароля по почте"?

                                                                          0

                                                                          Тем же, чем iPhone 1 от HTC touch :) Радикально ничем, но удобнее гораздо.
                                                                          Сброс пароля заставляет вводить новый пароль, у самых умных ещё "пароль не может совпадать со старым". Новый пароль точно так же забывается когда заходишь ещё раз на сайт ещё через год.
                                                                          Ну и заходить на сайт каждый раз через сброс пароля лютое неудобство и костыляторство, а тут как бы альтернативный способ: хочешь — заходи.

                                                                            0
                                                                            Сброс пароля заставляет вводить новый пароль, у самых умных ещё "пароль не может совпадать со старым".

                                                                            Это если "сброс пароля" требует ввода нового пароля, а не делает автологин. Такие решения уже есть.


                                                                            Впрочем, будем честными, этот описанный вами вариант реализован, например, в Slack — и вот я вам честно скажу, у меня он работает в половине случаев, а в половине глючит. А пароль работает всегда.

                                                                              0
                                                                              «В половине глючит» — это же проблема конкретной реализации.
                                                                                0

                                                                                Ну как бы проблема с не тем браузером — она часто встречается.

                                                                              0
                                                                              Удобнее — нет, если только не предлагать это прямо в процессе логина (и название сменить, да), иначе ровно то же самое. :)
                                                                            0
                                                                            Многие так и делают когда лень запоминать или записывать пароль. Вполне себе удобно, особенно когда сайт сохраняет сессию на долго.
                                                                            –2

                                                                            То есть:


                                                                            • у Вас есть потребность в интернете
                                                                            • у Вас есть электронная почта
                                                                            • при этом, у Вас нет смартфона и Вы где-то нашли интернет-кафе

                                                                            Кто Вы, и как попали в наше время?

                                                                              –1

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


                                                                              У меня смартфон-то есть, только сотового интернета нет. И дело было буквально года три назад в милом городе Севилье. И год назад на Койя-сан. И в этом году в Порткарно.

                                                                                0

                                                                                Не могли бы Вы в точности описать решаемую Вами задачу?


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


                                                                                Это какой-то очень интересный кейс.


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

                                                                                  +1

                                                                                  Омг, да все же просто, как валенок.


                                                                                  Есть билет, купленный онлайн. Чтобы пройти по билету, нужна распечатка (нет, показать с устройства нельзя; и все равно на устройстве билета нет). Билет лежит в pdf в дропбоксе. Сотового интернета нет, потому что нет (вплоть до отсутствия сотовой связи вообще, так тоже бывает). Приходим в принт-шоп, у них есть компьютер, подключенный к интернету (как раз для кейсов "распечатайте мне из интернета"). Заходим в дропбокс (там пароль и 2FA, пароль в менеджере на смартфоне, 2FA в приложении на смартфоне), скачиваем файл, отдаем на печать, все.


                                                                                  В случае с онлайн-банкингом все то же самое, только сотовая связь есть, а сотового интернета нет (у меня так в Китае было).

                                                                                    0
                                                                                    В случае с онлайн-банкингом все то же самое

                                                                                    То есть, Вы входили в онлайн-банк с компьютера на котором побоялись вводить пароль от своей почты?

                                                                                      0

                                                                                      Ну да, я даже объяснял, почему.

                                                                                      –1
                                                                                      Билет лежит в pdf в дропбоксе.

                                                                                      То есть Вы, с таким большим, по Вашим словам, опыте и знаниях, не имеете с собой OTG и флэшки на такой случай?

                                                                                        +1

                                                                                        Да. Я вообще перестал с собой возить носители в путешествия.

                                                                                          –2

                                                                                          Вам не кажется, что такой Ваша пример нерепрезентативен при обсуждении функционала массового сервиса?

                                                                                            0

                                                                                            Нет, не кажется.

                                                                                0
                                                                                В чём проблема завести специальный почтовый ящик-помойку? Основная почта пусть будет для общения и важных дел, запасная — для подписок на спам и засвечивания везде, где требуется.
                                                                                  0

                                                                                  Ни в чем.

                                                                                +5

                                                                                пришел к подобному подходу довольно давно есть пару замечаний по таблице sign_in_requests:


                                                                                1. Колонку email заменить на users_id (связь по primarykey как то более привычно).
                                                                                2. Вместо колонки expiredAt, мне кажется более логично created_at (тем самым время жизни токена можно вынести в конфиг).
                                                                                3. Вместо колонки isUsed более логично использовать activated_at где писать дату входа по токену
                                                                                4. Колонка requestIp в реальности бесполезна (если только не супер строгая система, но там такой подход вообще не подойдет).
                                                                                5. Добавляю колонку deleted_at где можно деактировать любую запись

                                                                                Также в некоторых случаях если не охото jwt юзать или сессии, можно добавить колонку secret(Uniq) и сообщать ее пользователю и там хранить уже в куках или localstorage и отправлять этот секрет с каждым запросом, у этого подхода есть и минусы но в некоторых случаях он прекрасно подходит


                                                                                Получается колонка secret это как бы session_id который не чистится и человек авторизован пока не выйдет (logout)

                                                                                  +1
                                                                                  Колонку email заменить на users_id (связь по primarykey как то более привычно).

                                                                                  Как я говорил выше, в этой реализации, эта таблица может также выполнять роль sign_up_requests. А в этом случае, у вас может еще не быть пользователя с таким email.


                                                                                  Вместо колонки expiredAt, мне кажется более логично created_at (тем самым время жизни токена можно вынести в конфиг).

                                                                                  Тоже вариант. Но у меня были случаи, когда токен нужно было в ручном сделать "долгожителем" (для нерасторопного, но очень важного для бизнеса пользователя), при этом не меняя срок жизни остальных токенов.


                                                                                  Вместо колонки isUsed более логично использовать activated_at где писать дату входа по токену

                                                                                  Вот это крутое замечание, обновил статью.


                                                                                  Добавляю колонку deleted_at где можно деактировать любую запись

                                                                                  Как я заметил в статье, это минимальный набор, и deleted_at более чем нужен в реальной жизни (в том числе и в таблице с пользователями), но в текущем повествовании это было лишним.

                                                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                                                    +2
                                                                                    Корпоративным сайтам, где ваши пользователи уже используют вашу внутреннюю почту.

                                                                                    На корпоративных сайтах обычно используется SSO.

                                                                                      –1

                                                                                      Но перед тем, как зайти через SSO вы ведь должны ввести email + pass. Конечно, если ваш почтовый сервис, это уже SSO, то да, вопрос отпадает.

                                                                                        +3
                                                                                        Но перед тем, как зайти через SSO вы ведь должны ввести email + pass.

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

                                                                                      +2
                                                                                      А в чём проблема вместо подтверждения по емейл запросить код из Google Auth?
                                                                                      И безопасно и помнить не нужно. Тогда и пароль нафиг не нужен. И нет необходимости в каждом интернет-кафе почту дёргать. А уж критические изменения подтверждать по е-майл.
                                                                                        +2
                                                                                        И безопасно и помнить не нужно.

                                                                                        Небезопасно. Украли устройство — получили доступ.


                                                                                        А если устройство отказало — доступ не получит даже владелец.

                                                                                          +1
                                                                                          Не будем драматизировать. Во-первых я указал что критичные изменения подтверждаются по е-мейл. Для параноиков или сайтов с деньгами можно сделать выбор «пароль/auth/пароль+auth». Во-вторых — если вы забыли пароль (равноценно утере девайса) — всё равно в тот же е-мейл для восстановления полезете. И не забывайте, сервер может проверять белые списки, смотреть были ли заходы с этого ip ранее и проводить иные проверки, и при сомнениях задавать пользователю разные неожиданные вопросы из ряда секретных или требовать таки ввести пароль/пин. В общем идея хороша, и всяко девайс угнать обычно сложнее, чем пароль.
                                                                                            0
                                                                                            Не будем драматизировать.

                                                                                            Это не "драматизировать", это реальные проблемы. Кому-то может быть на них положить, так бывает. Но не всем.


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

                                                                                            Доступном на том же устройстве, да?


                                                                                            Во-вторых — если вы забыли пароль (равноценно утере девайса) — всё равно в тот же е-мейл для восстановления полезете

                                                                                            Это если восстановление через емейл.


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

                                                                                            Да нет, просто забрал со стола и все.

                                                                                              –1
                                                                                              Кому-то может быть на них положить, так бывает. Но не всем.

                                                                                              Судя по вашим сообщениям выше, вам положить. Но потроллить-то надо.
                                                                                              Доступном на том же устройстве, да?

                                                                                              Нет, на телефоне только 2fa.
                                                                                              Да нет, просто забрал со стола и все.

                                                                                              А вы не бросайте на столе телефон с 2fa, если вы такой параноик.
                                                                                        –3
                                                                                        Предлагаю диаметрально противоположное — для авторизации на сайте предлагаем ввести пользователю только пароль. Действительно, зачем при авторизации нужен логин?
                                                                                        Email, имя и еще какие-то данные могут спрашиваться при регистрации и использоваться, например для рассылки уведомлений, но при авторизации спрашивать только пароль. Да, пароли у всех должны быть одинаковые, потому-что автогенерируемые.
                                                                                        P.S. Пытался опубликовать заметку на эту тему на хабре, хотя суть укладывается в одном предложении.
                                                                                          +2
                                                                                          для авторизации на сайте предлагаем ввести пользователю только пароль. Действительно, зачем при авторизации нужен логин?

                                                                                          Чтобы исключить ситуации, когда пароли совпадают.


                                                                                          (еще чтобы усложнить перебор, конечно же)

                                                                                            –3
                                                                                            представьте, что пароль у вас — это склеенные email и пароль.
                                                                                            пароли и должны быть у всех разные. если они настолько просты, что совпадают — сам себе злобный буратино.
                                                                                              +1
                                                                                              >> если они настолько просты, что совпадают
                                                                                              Вопрос скорее в том, как вы будете проверять, что пароли у всех пользователей различны? Для логина, который хранится в открытом виде это простейший запрос к БД, а вот для паролей, которые принято хранить хешем с солью это задача резко усложняется.
                                                                                                –2
                                                                                                А не надо проверять после выдачи, пароль генерируем сами, уникальным:) это как пример.
                                                                                                  0
                                                                                                  >> пароль генерируем сами, уникальным
                                                                                                  Вам за это не один пользователь спасибо не скажет. Например, видели какие сейчас имена электронных адресов автоматически предлагают Яндекс, Google? А мы тут вроде как про удобство.
                                                                                                  –3
                                                                                                  Для неавторизированного пользователя отображаем поле ввода пароля, человек вводит свой пароль, берем от него хеш (с солью), проверяем есть ли такой пароль в табличке, если есть — авторизуем пользователя, если нет — это новый пользователь, предлагаем ему ввести доп информацию о себе, например email или что кому нужно.

                                                                                                  На счет одинаковых паролей, просто хочу показать, что подход с одним паролем ничем от логина и пароля не отличается, только это удобнее.
                                                                                                    +1
                                                                                                    >> водит свой пароль, берем от него хеш (с солью)
                                                                                                    Вот тут то и проблема. Соль то у каждого своя. Вам придется сгенерировать столько хешей, сколько пользователей на вашем ресурсе. И хорошо если их 2, а если их 10 000… А это уже практически готовая атака на ваш ресурс.
                                                                                                      0
                                                                                                      Соль или должна быть одна, общая, или генерироваться из пароля.
                                                                                                        0
                                                                                                        Соль или должна быть одна, общая, или генерироваться из пароля.

                                                                                                        А вы уверены, что у вас криптографическая стойкость от этого не упадет? По идее, должна бы.

                                                                                                          0
                                                                                                          Криптографическая стойкость при этом пострадает. Любое упрощение аутентификации не должно приводить к дырам в безопасности. Если вы уж решили ограничиться только паролем, то хотя бы его надо хранить грамотно.
                                                                                                            0
                                                                                                            Соль должна генерироваться из логина, а не из пароля. Ну и статическую соль для всех юзеров тоже добавить.
                                                                                                          +1
                                                                                                          На счет одинаковых паролей, просто хочу показать, что подход с одним паролем ничем от логина и пароля не отличается, только это удобнее.

                                                                                                          Ничем не отличается? Как вы защититесь от ситуации "ошибся в одном символе пароля, попал в чужую учетку"?

                                                                                                            +1
                                                                                                            И как бороться с подбором пароля?
                                                                                                            Т.е. тупым перебором можно подобрать всю базу аккаунтов.
                                                                                                              0
                                                                                                              Предложу аналогию с симметричными алгоритмами шифрования. Одного пароля достаточно и, если пароль достаточно хороший «тупым» перебором его подобрать «проблематично».
                                                                                                                0
                                                                                                                В чем проблематичность перебора?
                                                                                                                Если у сервера есть логин, то перебор пароля пресекается после N неудачных попыток входа в этот аккаунт — все остальные работают. Если у Вас только пароль, то можно бесконечно долго подбирать пароли — Вы не можете пресечь эти попытки, только положив весь сервер.
                                                                                                                  –2
                                                                                                                  Точно также как можно бесконечно брутить пароль для зашифрованного архива и если пароль достаточно сложный ничего не получить, не смотря на то что никто и никак не может ограничить попытки подбора этого пароля.
                                                                                                                  Тем более, что с брутом пароля к аккаунту на веб-сервисе все-таки есть некоторые возможности ограничить попытки брутфорса, например по ip.
                                                                                                                  И еще, я не предлагал использовать эту систему для всего, например для денежных операций. Мне кажется для различных сервисов должны использоваться разные подходы. Я скорее про те сервисы, брутить пароли для которых никому особо и не нужно (в смысле не стоит стоимости этого самого брута).
                                                                                                                    +1
                                                                                                                    В случае с паролем к архиву у Вас всего один вариант пароля.
                                                                                                                    В случае с сервисом злоумышленник может подобрать все пароли или большую часть. Особенно, если ему все равно какой аккаунт взламывать.
                                                                                                                      0
                                                                                                                      Согласен, т.е. подбор пароля для базы из 10000 пользователей упрощает задачу на log(10000,2) = 13.3 бит. Пароль из 16 символов это около 85 бит (если только английские символы и цифры).
                                                                                                                      И еще, что если злоумышленник уже как-то слил базу с хешами и теперь ему нужно подобрать пароль к хешам.

                                                                                                                      Интересно кстати, никто еще не придумал делать табличку с хешами пользователей общедоступной?
                                                                                                                      Опять же на первый взгляд может показаться дикостью, с другой стороны можно привести аналогию с шифрованием по типу «черного ящика» и нормальным шифрованием, когда известно как шифруется и зашифрованные данные общедоступны, но расшифровать их не так-то просто.
                                                                                                                        +1
                                                                                                                        >> Пароль из 16 символов
                                                                                                                        Вы совсем не любите своих пользователей.
                                                                                                            0
                                                                                                            И для хеша это простейший запрос к бд, разве что строка для проверки длиннее.
                                                                                                              +1
                                                                                                              >> И для хеша это простейший запрос к бд, разве что строка для проверки длиннее.
                                                                                                              Это не так. Если пароли хранятся стандартно т. е. в хеше и с солью различной для каждой строки, то каким запросом вы проверите, что нового пароля еще нет в БД? Вам придется сгенерировать хеши для всех строк и выполнить сравнение с новой строкой. Это совсем другая сложность.
                                                                                                            0
                                                                                                            представьте, что пароль у вас — это склеенные email и пароль.

                                                                                                            Представил. Чем это теперь отличается от введенного логина и пароля? Тем, что все в одном поле?


                                                                                                            пароли и должны быть у всех разные

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


                                                                                                            (защита от перебора все равно усложняется)

                                                                                                          0
                                                                                                          У меня все логины (где это не обяхательно имя пользователя или email) выглядят вот так: RMz-utG-7C
                                                                                                            0
                                                                                                            Но вам приходится заполнять в форме два поля, это не удобно и это излишне.
                                                                                                            Мысль использовать только пароль, конечно, может показаться дикой, но только сначала.
                                                                                                              0
                                                                                                              За меня это делает автозаполянлка, ей всё равно сколько полей.

                                                                                                              Кстати, на счёт одного пароля, это я где-то такое видел на очень древнем сайте. Просто даётся некий id и всё.
                                                                                                                0
                                                                                                                Если вспомните где это видели, напишите пожалуйста здесь.
                                                                                                                  0
                                                                                                                  Это был какой-то адовый правительственный сайт из 90ых :)
                                                                                                                    0

                                                                                                                    Если не изменяет память, так делает саппорт Webmoney, он просто выдает вам токен на вход в чат.

                                                                                                                    0
                                                                                                                    Например, на DuckDuckGo нужна только pass phrase для сохранения настроек.
                                                                                                              +3
                                                                                                              Внимание! Введенный вами пароль уже используется пользователем Вася Пупкин. Пожалуйста, введите другой пароль.
                                                                                                              +5

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

                                                                                                                0
                                                                                                                Вот ведь занятно, коллега — вы ответили на час позже и примерно то же самое.
                                                                                                                А плюсуют вас :)
                                                                                                                  +1
                                                                                                                  Я вообще рид-онли, мне на плюсы всё равно.
                                                                                                                  Вашего комментария на момент написания не видел, извинтиляюсь.
                                                                                                                +8
                                                                                                                То есть, чтобы залогиниться на форум мне надо ещё и почту проверить и что-то там ткнуть, вместо того чтобы автозаполнение само за меня заполнило. У — удобство. А если учитывать, что добрые 90% моих учёток загеристрированны с почтой на 10minutemail.com то становится вдвойне весело.
                                                                                                                  0

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


                                                                                                                  Что касается большого срока жизни сессии — какая разница, надо вводить пароль или нет, если это надо делать раз в год?


                                                                                                                  Ну и последнее, про менеджеры паролей. По-хорошему, если уж Вы заботитесь о безопасности пользователей, то нужно наоборот, приучать и стимулировать использовать менеджеры паролей. Что касается сложности в использовании — то с тем же KeePass всё наоборот намного проще, чем в Вашей схеме — когда я вижу форму логина на сайте я нажимаю Ctrl-Alt-A и… всё. KeePass сам определяет что это за сайт, сам вводит логин/пароль или что на этом сайте нужно, и сам отправляет форму. Так что вся "сложность" использования менеджера паролей заключается в однократном добавлении записи о новом сайте при регистрации (с процессом которой KeePass так же помогает генерируя пароль).

                                                                                                                    0
                                                                                                                    Я вам так скажу, многие сервисы, высылают пароль на почту а не генерируют новый (уже меньше таких стало, но имеют место быть. Даже в топовых интернет-магазинах).
                                                                                                                      0

                                                                                                                      Я в курсе. И? К чему Вы это сказали?

                                                                                                                        –1

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

                                                                                                                          0
                                                                                                                          Да, пароли без хешей, бери и пользуйся. Высылают ваш старый пароль.
                                                                                                                          И это я говорю не про маленькие, неизвестные магазины, про крупные точки.
                                                                                                                      0

                                                                                                                      Идея-то может и хорошая (избавиться от множества паролей), но вот реализация…
                                                                                                                      Тут можно провести две аналогии:


                                                                                                                      1. Это OAuth. Но не OAuth, а хуже. Потому что это просто почта. Кэп доволен. %)
                                                                                                                      2. безопасность повышается в разы, т.к. такому пользователю достаточно помнить один сильный пароль от почты
                                                                                                                        Это менеджер паролей. Потому что в итоге — все равно нужен один пароль. Но это хуже менеджера паролей, потому что… ну вы поняли. %)

                                                                                                                      В обоих случаях есть общая черта — мы используем почту не по назначению, отсюда огребаем косяки с пограничными случаями и удобством. Отсюда вывод — надо использовать менеджеры паролей, потому что они ради этого и придуманы! Минус только один — менеджер паролей есть не у всех, и он не стандартизован (так, как почта). Хотя, с момента распространения соцсетей и смартфонов, и почты, вероятно, у кого-то уже может не быть… но это уже не проблема запоминания паролей.


                                                                                                                      И да, есть еще вариант — ключ. Это можно считать за длинный незапоминаемый логин+пароль, если угодно. Или просто хардварный ключ.

                                                                                                                        0
                                                                                                                        Ах да, забыл еще важный момент — почта никак не гарантирует сохранность ваших паролей! Вот у меня, к примеру, мыло.жру регулярно стало отжимать почту в этом году, но, к счастью, я там давно ничего важного из логинов уже не держал или перевел от греха подальше в короткие промежутки, пока был доступ… Или вообще контора, держащая серваки, разорится/реорганизуется и домен с почтой пропадет навсегда.
                                                                                                                        Такие дела. :)
                                                                                                                          0

                                                                                                                          К счастью, пока что все основные сервисы предоставляют POP3. Плюс можно зарегать собственный домен чтобы ни от кого не зависеть. Тогда все письма будут скачиваться на личный комп и аккуратно бэкапиться в зашифрованном архиве в облако. С другой стороны, домен, наверное, тоже могут отобрать… как страшно жить, да.

                                                                                                                          +1
                                                                                                                          Менеджер паролей это PKI. Но не PKI, а хуже. Почему сайты не делают аутентификацию по пользовательскому сертификату — не ясно.
                                                                                                                            +1

                                                                                                                            Некоторые делают: webmoney, startssl. Геморроя с этими сертификатами — море. Нет, после регистрации всё неплохо, сертификат установлен в браузер и дальше логиниться несложно. Но чтобы не остаться без доступа приходится из браузера этот сертификат выковыривать, сохранять в отдельный файл, при этом его шифруя паролем (который ещё нужно добавить в менеджер паролей, угу), импортировать его в другие свои браузеры (а что, если доступ нужен с чужого компа, кстати?) и потом ещё не забывать обновлять эти сертификаты (во всех браузерах, чтобы не скучно было) раз в 1-3 года. Спасибо, но нет!

                                                                                                                              –2
                                                                                                                              Ну это проблема в том, что в браузере нет удобного интерфейса, а не в сертификате. Пароль тоже надо менять. Заходить в почту или интернет банк с чужого компа я бы и так и не стал.
                                                                                                                          +2

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

                                                                                                                            +4
                                                                                                                            Увеличивается время входа на сайт. Ввести логин и пароль гораздо быстрее.
                                                                                                                              –2
                                                                                                                              Увеличивается время входа на сайт.

                                                                                                                              Вы имеете ввиду время сессии / срок действия cookie?

                                                                                                                                0
                                                                                                                                Нет, сам процесс входа. Вместо «ввёл имя, ввёл пароль, нажад вход» получается «ввёл почту, открыл вкладку с почтовым ящиком/почтовый клиент, открыл письмо, нажал на ссылку».

                                                                                                                                Плюс многие сейчас почту только на телефоне читают, а пароль от почты могут даже не помнить. И им тогда придётся ручками ссылку вбивать. Лучше уж цифровой код присылать. Ну или и то и другое сразу.
                                                                                                                                В общем, хуже только вход на сайты через соцсети устроен, когда тыкаешь «войти через фэйсбук», а тебя, после подтверждения доступа на фэйсбуке, кидают на форму регистрации на самом сайте. Нахрена тогда вообще фэйсбук тут нужен был?
                                                                                                                                  0
                                                                                                                                  Нет, просто представьте, что ходите в интернет через диалап. Но сайты уже совсем не те, что были при диалапе. %)
                                                                                                                                0
                                                                                                                                Одно из возможных решений, это использовать OAuth 2.0, но не у всех пользователей может быть аккаунт в социальной сети и желание его использовать на вашем ресурсе.

                                                                                                                                А что мешает использовать несколько способов аутентификации? Кто хочет, тыкает «войти через facebook» и логинится через него, кто хочет — регистрируется через логин-пароль и использует их для входа на сайт? Как вариант, можно даже руководствоваться таким принципом: если соцсеть отдаёт е-мейл, привязанный к учётной записи, то считать, что соцсеть уже подтвердила принадлежность этого адреса владельцу (но предварительно проверить используемые соцсети, что они действительно проверяют при привязке почту, а не разрешают забить туда любой адрес безо всякой проверки)
                                                                                                                                  0

                                                                                                                                  Заметьте, я не сказал ни слова против OAuth. Подход описанный выше может спокойно сосуществовать с ним (в принципе, как сейчас и происходит).

                                                                                                                                  +1
                                                                                                                                  На сайте издательства «Манн, Иванов и Фербер» (не реклама) давно реализован похожий способ аутентификации.
                                                                                                                                    0

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

                                                                                                                                    • НЛО прилетело и опубликовало эту надпись здесь