Мне нужно скрыть длину пароля, вводимого при входе в мое веб-приложение asp.net. Я знаю, что серверное управление текстовым полем asp.net имеет текстовый режим пароля, но я даже не могу это показать. Любые предложения о том, как скрыть пользовательский ввод?
ASP.NET скрывает длину пароля при входе
Ответы (5)
<input type="password" name="password" style="color:White;"/>
кажется близким к вашему требованию, но некоторые браузеры выделяют поля ввода желтым цветом, когда вы находитесь в них. Установка размера шрифта в 1 пиксель — еще один трюк, который вы можете попробовать.
Но проще всего вместо этого использовать z-index, чтобы поместить изображение или цветной DIV поверх поля пароля. Возможно, лучше всего подойдет анимированный gif с линией символов *, которая случайным образом увеличивается и уменьшается — это полностью запутает зрителей! :-)
То, как пользователь даже узнает, что поле выбрано, - это еще одна проблема, с которой вы столкнетесь, возможно, какой-то дополнительный javascript, чтобы обнаружить и сообщить им об этом.
Если вы должны (что я согласен с @Ando, что вы не должны из-за проблем с пользовательским интерфейсом), я бы использовал javascript (onkeydown), чтобы скопировать каждый символ в скрытое поле ввода и удалить ключ, введенный в поле.
Это позволит вам получить пароль при обратной передаче, оставив поле ввода пустым для пользователя.
Конечно, если пользователь нажимает клавиши со стрелками, удаление или возврат, вам придется решить, как с этим справиться.
Сокрытие длины ввода кажется очень плохой идеей пользовательского интерфейса с точки зрения пользователей, и вы должны возразить, что спецификацию следует изменить.
Хотя я также согласен со всеми остальными, что это плохая идея, я понимаю, что иногда вам приходится делать то, с чем вы не согласны.
Я бы предположил, что сделал Микаэль, но он уже сделал это. :)
Резюмируя:
Я бы использовал javascript (onkeydown), чтобы скопировать каждый символ в скрытое поле ввода и удалить ключ, введенный в поле.
Это позволит вам получить пароль при обратной передаче, оставив поле ввода пустым для пользователя.
Конечно, если пользователь нажимает клавиши со стрелками, удаление или возврат, вам придется решить, как с этим справиться.
Вы сказали:
Моя проблема с использованием Javascript и сохранением в скрытом поле заключается в том, что пользователь просматривает источник страницы и видит ее.
Я почти уверен, что просмотр источника должен показывать вам только то, что было загружено изначально, а не то, что ввел пользователь. Однако есть инструменты (например, надстройки Firefox), которые могут это сделать. Вы можете сохранить значение в переменной javascript и поместить пароль в скрытое поле только при его публикации или использовать какой-либо запрос ajax для аутентификации. Тем не менее, с правильными аддонами кто-то может найти и это.
Если проблема заключается в том, что кто-то смотрит через плечо человека, входящего в систему, то эти проблемы (например, просмотр источника) не будут иметь значения, если человек, который входит в систему, не решит просмотреть источник и показать человеку, в этом случае это было бы просто проще чтобы он сообщил другому человеку свой пароль.
Согласитесь, что это не лучшая идея...
1) Когда вы начинаете печатать, при каждом нажатии клавиши ограничивайте ввод определенного символа как части пароля (например, канал), затем, когда пользователь вводит, добавляйте произвольное количество каналов (например, от 0 до 4 каналов), а затем просто удалить эти серверные?
2) Добавьте их в скрытое поле... если пользователь выполнит View_Source, он увидит только исходное значение поля, т.е. будет пустым... просто не забудьте очистить значение, если вам нужно, в зависимости от того, как оно визуализированный (управление скрытым полем веб-формы asp.net) и т. д.
3) Иметь 2 ящика для паролей, для которых нужно 2 пароля (так же плохая идея)
Я подтвердил требование у сотрудника службы безопасности и, видимо, не прочитал требование. Тем не менее, я видел приложения на базе Windows, выполняющие это. Курсор перемещается при каждом нажатии клавиши, но звездочка, звездочка или полоса не используются. Спасибо всем за т.е. предложения и комментарии.