Используйте значение заполнителя для паролей в веб-формах - PullRequest
0 голосов
/ 22 января 2020

My ASP. NET Приложение Core MVC хранит пароли учетных данных, предоставленные пользователем для доступа к другим ресурсам. Это означает, что пароль должен храниться в виде простого текста в базе данных, но, как и для всех паролей, он не должен отображаться пользователю при редактировании конфигурации. (Я включаю чтение исходного кода страницы. Использование инструментов разработчика для быстрой проверки предварительно заполненного поля пароля - это то, что технически квалифицированный пользователь может легко сделать.) Пароль также может быть очищен, что необходимо различать. Кроме того, пользователь должен иметь возможность видеть, был ли установлен пароль или нет. Поле ввода маскируется: <input type="password"> (но источник HTML, конечно, не является.)

Чтобы пользователь мог видеть, был ли установлен пароль, но не видеть сам пароль, я обычно используют недопустимый заполнитель / заменяющее значение при заполнении формы для отображения. В PHP я часто использую только строку пробелов и фиксированной длины. Это создает впечатление, что пароль был введен, но на самом деле его там нет. В запросе POST я проверяю, состоит ли это поле только из пробелов, и не меняю пароль в хранимых данных. Если пользователь удалил все пробелы, то поле будет пустым, и я удалю сохраненный пароль.

ASP. NET Core MVC, однако, не позволяет мне сделать это. Когда пользователь предоставляет только строку пробелов, привязка модели дает мне значение null. Это делает некоторую неявную обрезку и затем полное удаление значения для меня. (Request.Form["MyPassword"] по-прежнему содержит исходные пробелы.) Поэтому использовать этот подход с ASP. NET немного нецелесообразно. Я также неохотно определяю произвольный «никогда не используемый» пароль в качестве строки замены, потому что пользователь может ввести его как реальный пароль. Вы никогда не знаете.

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

1 Ответ

1 голос
/ 22 января 2020

Самый прозрачный способ - разместить над полем текст с надписью «Пароль уже установлен, ввод чего-либо в это поле изменит этот пароль». в заметном поле (например, на красном фоне). Быть прозрачным - лучший способ.

Обязательно установите autocomplete="off" в поле пароля, чтобы менеджеры паролей не запутались со значением. Это не работает в Firefox, однако - решение было бы пометить поле как доступное только для чтения и вернуть его по щелчку (с JavaScript).

Кроме того, не храните пароли в виде простого текста , Есть много отличных хеш-библиотек для C#.

...