Почему мы не используем HTML поля для ввода паролей для имен пользователей и кодов двухфакторной аутентификации на фронтэнде веб-приложений?

Вопрос или проблема

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

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

Почему мы не используем поля ввода пароля HTML для имен пользователей и кодов 2FA в интерфейсе веб-приложений? Почему это не является общепринятой практикой? Даже с кнопкой ‘предпросмотр’ рядом с ним, это, вероятно, безопаснее, чем просто показывать его в открытом виде.

Также есть ли описанные лучшие практики, которые рекомендуют веб-разработчикам не использовать адрес электронной почты в качестве имени пользователя и скрывать имя пользователя и коды 2FA в интерфейсе?

Когда используется аутентификация по паролю, то элемент аутентификации фактически представляет собой пароль. Имя пользователя является всего лишь идентификатором, который может быть полностью публичным (если, конечно, он не содержит конфиденциальные данные, такие как адрес электронной почты). Использование случайного имени пользователя в качестве дополнительного секрета имеет мало смысла, потому что это заставляет пользователя эффективно управлять двумя секретами при отсутствии преимущества перед одним надежным паролем. Существуют также практические вопросы. Храните ли вы имя пользователя в открытом виде на сервере? В таком случае это едва ли секрет. Храните ли вы простой хеш? Тогда имя пользователя должно быть очень длинным или очень сложным, чтобы противостоять атакам перебором. Используете ли вы специализированный алгоритм хеширования паролей, такой как Argon2? Тогда вам понадобится еще один идентификатор для поиска параметров хеша. В общем, имя пользователя должно быть выбрано пользователем и быть достаточно простым, чтобы он смог его запомнить.

Причина, по которой коды 2FA показываются в открытом виде, заключается в том, что они действительны только в течение короткого промежутка времени (например, 30 секунд) и работают только в сочетании с паролем. Так что даже если кто-то увидит код, это не даст ему немедленного доступа к учетной записи. Это также вопрос удобства. Необходимость вводить код за относительно короткий промежуток времени уже создает некоторый стресс. Если пользователь не может даже увидеть код и где-то ошибается, это быстро станет причиной разочарования.

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

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

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


Что касается OTP, то существует больше аргументов в пользу их скрытия, и я определенно видел некоторые сайты, которые это делают. Но тот факт, что у них такой короткий срок жизни (и во многих случаях они могут использоваться только один раз), означает, что многие сайты не утруждаются этим. Убедить людей настроить и использовать MFA в первую очередь и так достаточно сложно, так что добавление дополнительных уровней сложности может оказаться контрпродуктивным.

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

Ответ или решение

Почему мы не используем поля ввода паролей для имен пользователей и кодов 2FA в веб-приложениях?

При разработке веб-приложений важное внимание уделяется вопросам безопасности и пользовательского опыта. Одним из актуальных вопросов, который часто возникает у специалистов в области ИТ, является практика отображения имен пользователей и кодов двухфакторной аутентификации (2FA) в виде обычного текста вместо скрытого ввода. Давайте рассмотрим основные аспекты этой темы.

1. Уникальность имени пользователя

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

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

2. Безопасность полей ввода

При вводе имени пользователя и кода 2FA логика "безопасного ввода" затруднительно применима. Основная причина, по которой имена пользователей обычно отображаются в обычном виде, заключается в том, что они не считаются конфиденциальной информацией. Пользователи могут увидеть имя пользователя после входа в систему, поэтому скрытие его на экране входа в систему не предотвращает возможные атаки подглядывания (shoulder surfing).

С другой стороны, код 2FA также часто отображается в открытом виде. Срок его действия, как правило, составляет всего 30–60 секунд, и он используется вместе с паролем. Скрывать его может быть нецелесообразно из-за следующих причин:

  • Удобство для пользователя: Необходимость быстро ввести код и возможность делать ошибки при вводе создают дополнительный стресс. Если код нельзя увидеть, можно легко допустить ошибку, что приведет к неудачной попытке входа.
  • Краткосрочность кода: Код 2FA, как правило, можно использовать только один раз, и его цель – дополнительно защитить учетную запись. Если кто-то увидит код, это не предоставляет немедленного доступа к учетной записи.

3. Практика безопасности

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

Заключение

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

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

Оцените материал
Добавить комментарий

Капча загружается...