Вопрос или проблема
Веб-сайт, которым я иногда пользуюсь, недавно обновил свой интерфейс и добавил флажок “Показать” рядом с полем для пароля на форме входа. Я понимаю, почему некоторые люди хотят иметь такую возможность, когда вводят свой пароль, но это кажется уязвимостью, если вы используете менеджер паролей, который автоматически заполняет ваш пароль.
В моем случае пароль сохранен в менеджере паролей Firefox, который защищен мастер-паролем **. Так что, да, кто-то другой, временно использующий Firefox на моем компьютере, может случайно войти на этот сайт автоматически, но я, по крайней мере, ожидаю, что они не смогут увидеть мой текущий пароль.
Однако с этой новой галочкой они могут: я посетил сайт, перешел к форме входа, которую Firefox автоматически заполнил моим паролем (замаскированным в виде серии точек). Затем я нажал на “Показать”, и действительно, мой пароль отобразился в открытом виде.
Наконец, если это проблема безопасности, как можно кратко обрисовать ее веб-администратору сайта? Я не являюсь веб-дизайнером или администратором.
** В контексте этой темы давайте не будем углубляться в обсуждение того, безопасен ли менеджер паролей Firefox как средство защиты паролей. Я использую его только на своих домашних и рабочих компьютерах, которые редко используются другими. Даже если вы думаете, что мне следует использовать более надежный менеджер, такой как LastPass, думаю, схожая уязвимость возникнет, если кто-то окажется за вашим компьютером, пока LastPass будет авторизован.
Помимо очевидной проблемы безопасности, когда кто-то может физически увидеть, какой пароль вы вводите – о чем пользователь в любом случае будет осведомлен – существуют некоторые “беспокойства” по поводу безопасности, которые могут возникнуть в зависимости от того, как это реализовано и какое (доверительное) программное обеспечение находится в системе пользователя, что потенциально может ненужно открыть пароль для сторонних приложений/инструментов.
Если опция “показать пароль” просто изменяет type
элемента ввода на text
, то любые плагины браузера (или сторонние приложения), которые проверяют правописание текстовых полей, теперь будут активны на этом элементе. В Google Chrome это может включать отправку текста в Google для “Запроса предложений от Google”.
У меня также установлено стороннее приложение-словарь, которое будет искать текст под курсором мыши. Это не работает на полях password
, но работает на полях text
.
Текстовые поля также могут быть копируемыми (потенциально с помощью сторонних приложений), а поля для пароля – нет.
Формы входа не должны разрешать autocomplete
в любом случае, но изменение type
элемента ввода на text
потенциально позволяет сохранить пароль в базе данных автозаполнения браузера (что не обязательно безопасно), если элемент ввода не изменится обратно на password
перед отправкой.
Альтернативой изменению type
поля password
является “показ пароля” в неформенном элементе. Это может быть “безопаснее”.
В заключение… это должно быть безопасно, но я думаю, что существуют потенциальные риски, о которых конечный пользователь может не подозревать. Однако именно конечный пользователь должен принимать решение “показать пароль”.
Если мы игнорируем все остальное, что вы упоминаете (то есть общий компьютер, сохраненные пароли в Firefox и т. д.), функция “показать” пароль сама по себе не является риском безопасности. Это для удобства и “обычного пользователя”. Ничто не мешает кому-либо воспользоваться встроенным инспектором браузера и изменить тип ввода с password
на textbox
. Это выполняет ту же функцию (показать пароль), но без необходимости “изменять” HTML. Я делаю это все время на сайтах, где нет этой “функции”. Поле текста типа password
только маскирует буквы на пользовательском интерфейсе.
Не существует внутренней проблемы безопасности с расшифровкой поля пароля как такового. В функциональной работе сайта любой метод, который может получить доступ к полям формы (таким как серверные запросы или JavaScript), все равно сможет получить доступ к данным из замаскированного поля без особых усилий. Маскирование пароля выполняет две функции. Во-первых, оно предотвращает возможность тому, кто смотрит через плечо у пользователя, увидеть, какой у него пароль, и это также немного театра безопасности, заставляя пользователя думать, что его пароль защищен, независимо от того, насколько он безопасен.
Наличие чекбокса, который позволит вам расшифровать пароль, не является особой проблемой безопасности, так как это позволит конечному пользователю решить, хочет ли он увидеть введенный им пароль и принять решение о том, находится ли он в ситуации, когда чувствует, что безопасно оставлять пароль видимым на странице или нет.
Безопасность самого пароля больше зависит от того, как пользователь хранит пароль (то есть не записывая его нигде), и от того, безопасно ли соединение между браузером и сервером (HTTPS), чем от типа поля для ввода пароля.
Это определенно проблема безопасности. Тот факт, что кто-то может сидеть за моим компьютером и видеть мой сохраненный пароль, является проблемой. И Chrome, и Firefox защищают базу данных своих “Сохраненных паролей”, так что явно есть усилия по защите сохраненных паролей в секрете (так что когда кто-то сидит за моим компьютером, даже если он вошел от моего имени, он не может видеть эти сохраненные пароли в Chrome/FF). Тем не менее, когда кто-то заходит на веб-сайт, где используется пароль из этой базы данных, пароль показывается в открытом виде (как только я нажимаю на “показать пароль”). Это не имеет смысла.
Ответ или решение
Вопрос о безопасности функции "Показать пароль" на формах входа действительно важен и требует внимательного рассмотрения. Давайте проанализируем несколько аспектов этой функции.
Безопасность функции "Показать пароль"
-
Удобство пользования:
Функция "Показать пароль" в первую очередь предназначена для помощи пользователям. Она позволяет людям проверить, что они ввели правильный пароль прежде чем его отправить. Это особенно полезно на устройствах с небольшими экранами или при плохом зрении. -
Потенциальные риски:
- Визуальное раскрытие пароля: Если рядом с пользователем находятся другие люди, они могут увидеть введенный пароль. Это представляет собой очевидный риск в ситуациях, когда пользователь находится в общественном месте.
- Технические риски: Если поле было изменено с
type="password"
наtype="text"
, это может активировать функции автозаполнения в браузерах или сторонних приложениях, которые могут записывать этот текст. Например, такие функции, как проверка орфографии или автоматическое заполнение форм, могут быть неактивны для полей паролей, но активны для текстовых полей. - Сохранение в базе данных автозаполнения: Если браузер обрабатывает поле как текстовое, это может привести к его случайному сохранению в режиме автозаполнения, что небезопасно.
-
Альтернативные подходы:
Вместо того, чтобы изменять тип поля на текстовое, более безопасным вариантом было бы предоставить пользователю возможность просмотра пароля в отдельном элементе интерфейса, который не подвергается сторонним программам и функциям автозаполнения.
Как донести это до веб-администратора
Если вы хотите сообщить веб-администратору о возможной уязвимости, вот краткое резюме, которое вы можете использовать:
Тема: Обеспечение безопасности функции "Показать пароль" на форме входа
Уважаемый [Имя администратора],
Я хотел бы обратить ваше внимание на недавно добавленную функцию "Показать пароль" в форме входа на вашем сайте. Хотя эта функция предоставляет удобство для пользователей, она также создает несколько потенциальных рисков безопасности:
- Визуальное раскрытие пароля: Пользователи могут случайно показать свои пароли в общественных местах.
- Активизация автозаполнения: Если поле пароля становится текстовым, браузеры или сторонние приложения могут взаимодействовать с ним по-другому, что может привести к утечке пароля.
- Сохранение пароля в автозаполнении: Использование типа
text
может привести к тому, что пароль будет случайно сохранен в менее защищенной базе данных автозаполнения браузера.
Рекомендуется рассмотреть возможность изменения реализации функции, чтобы она не изменяла тип поля, что повысит безопасность.
С уважением,
[Ваше имя]
Понимание рисков и правильное информирование пользователей и администраторов может помочь создать более безопасное интернет-пространство.