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

Мое веб-приложение содержит страницу редактирования профиля, где пользователи могут изменить свой адрес электронной почты, пароль и т. д. Поле пароля представляет собой HTML-тип «пароль», поэтому оно автоматически маскирует свое содержимое маркерами. Пароли сохраняются в базе данных в виде хэшей, поэтому я не загружаю в поле фактический пароль, а просто загружаю строку «********», которая отображается в виде восьми маркеров. Затем, когда форма отправлена, я проверяю отправленное значение, сохраняя новый пароль, если он отличается от «********».

Проблема в том, что пользователи часто отправляют справочные билеты, говоря, что их пароль не сохраняется правильно, потому что они ввели пароль длиной 6 или 10 или любой другой длины, но когда они возвращаются на страницу редактирования профиля, появляются 8 точек. Итак, веб-сайт ведет себя так, как задумано, но я устал объяснять это пользователям и пытаюсь придумать, как показать точное количество точек в поле.

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

Другой вариант — просто загрузить поле пароля пустым, и, надеюсь, пользователей это не смутит. Или я мог бы представить эту опцию как форму «изменить пароль», чтобы указать, что форма не пытается загрузить сохраненный пароль.

Но сначала я хотел бы знать, есть ли трюк, чтобы точно показать эти точки?


person arlomedia    schedule 07.03.2018    source источник
comment
Если вы также не сохраните длину их пароля, вы не сможете указать правильное количество точек. Что отговаривает вас от очевидного решения сделать коробку пустой?   -  person jonrsharpe    schedule 08.03.2018
comment
Почему вы не можете просто отобразить текст-заполнитель, чтобы указать назначение поля пароля? <input type="password" placeholder="New password" /> встречается довольно часто. Он исчезнет в тот момент, когда пользователь начнет вводить свой пароль, и отличается от фактического значения элемента тем, что обычно имеет более светлый цвет.   -  person Blender    schedule 08.03.2018
comment
@jonrsharpe Я не думаю, что это очевидно, когда все остальные поля показывают существующие значения. Я предполагаю, что суть проблемы в том, что поле пароля работает не так, как другие поля, но это тонкая разница, и я хочу, чтобы она казалась пользователям такой же, как и другие.   -  person arlomedia    schedule 08.03.2018
comment
Есть ли у вас какие-либо доказательства того, что пользователи сочтут это поведение более или менее запутанным, чем текущее (которое их определенно смущает)? Вы пробовали какое-то исследование пользователей, чтобы определить это? Какие пользовательские исследования или гипотезы привели вас к нынешнему поведению? Это больше похоже на проблему UI/UX, чем на проблему программирования.   -  person jonrsharpe    schedule 08.03.2018
comment
Да, это становится проблемой пользовательского интерфейса, если нет приемлемого программного решения, чтобы все поля выглядели одинаково.   -  person arlomedia    schedule 08.03.2018
comment
Вы смотрите на это задом наперед. Отзывы, которые вы получаете, относятся к пользовательскому опыту, не к технологии. В настоящее время вы пытаетесь найти технологическое решение проблемы, которая может быть неправильной. Я хочу, чтобы он казался пользователям таким же, как и другие. Они этого хотят? Поскольку это категорически другое, уместно ли вообще быть в одной и той же форме?   -  person jonrsharpe    schedule 08.03.2018
comment
Поскольку пользователю не следует задумываться о деталях того, как хранится и извлекается пароль, я считаю уместным сделать процесс смены пароля таким же, как и процесс смены адреса электронной почты. В таком случае технологическое решение для поддержки было бы идеальным. Я хотел спросить, есть ли решение, о котором я не думаю.   -  person arlomedia    schedule 08.03.2018


Ответы (1)


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

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

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

person martinstoeckli    schedule 09.03.2018