Как я могу показать пароль правильной длины, не делая свой веб-сайт менее безопасным?
Мое веб-приложение содержит страницу редактирования профиля, где пользователи могут изменить свой адрес электронной почты, пароль и т. Д. Поле пароля имеет тип HTML "пароль", поэтому оно автоматически маскирует свое содержимое с помощью маркеров. Пароли сохраняются в базе данных в виде хэшей, поэтому я не загружаю действительный пароль в поле, я просто загружаю строку "********", которая отображается в виде восьми маркеров. Затем, когда форма отправлена, я проверяю введенное значение, сохраняя новый пароль, если он отличается от "********".
Проблема заключается в том, что пользователи часто отправляют билеты помощи, говоря, что их пароль не сохраняется правильно, потому что они ввели пароль 6 или 10 или любой другой длины, но 8 точек появляются, когда они возвращаются на страницу редактирования профиля. Таким образом, веб-сайт ведет себя как задумано, но я устаю объяснять это пользователям и пытаюсь придумать, как показать точное количество точек в поле.
Единственное, о чем я могу думать, это сохранять длину пароля вместе с хешированным паролем всякий раз, когда я сохраняю пароль, а затем использовать эту длину, чтобы показать правильное количество точек. Но это будет менее безопасно, потому что это покажет хакеру, как долго каждый пароль.
Другой вариант - просто загрузить пустое поле пароля, и, надеюсь, пользователи будут меньше смущены этим. Или я мог бы представить эту опцию в виде формы "изменить пароль", чтобы указать, что форма не пытается загрузить сохраненный пароль.
Но сначала я хотел бы знать, есть ли хитрость в точном отображении этих точек?
1 ответ
Безопасным решением является обработка смены пароля на выделенной странице независимо от других настроек профиля пользователя.
В форме смены пароля запросите старый пароль, новый пароль и, возможно, подтверждение нового пароля. Не заполняйте эти поля заранее, они не должны и не могут отображаться правильно без ущерба для безопасности.
С другой стороны, страница профиля пользователя не должна содержать никакой информации о пароле.