ASP.NET скрывает длину пароля при входе

Мне нужно скрыть длину пароля, вводимого при входе в мое веб-приложение asp.net. Я знаю, что серверное управление текстовым полем asp.net имеет текстовый режим пароля, но я даже не могу это показать. Любые предложения о том, как скрыть пользовательский ввод?


person Corin    schedule 24.04.2010    source источник
comment
Может быть, у вас есть запрос на скрытие длины пароля, но это просто смутит пользователя (сколько символов я ввел? Что-нибудь произошло, когда я набрал этот символ?) - для меня то, что вы пытаетесь сделать, звучит как много работы для чего-то не стоящего :)   -  person Ando    schedule 24.04.2010
comment
Вам понадобится большая звуконепроницаемая коробка, чтобы накрыть человека, печатающего текст, чтобы никто не видел и не слышал, сколько символов он нажал на клавиатуре. Сделайте его достаточно большим, и вы также сможете закрыть экран. (т. е. ваш менеджер делает то, что большинство сочтет глупой просьбой)   -  person Ian Mercer    schedule 24.04.2010
comment
Я работаю в очень большой корпорации, то есть 20 000+ по всему миру. Анальная часть заключается в том, что мое приложение является строго интранет-приложением для внутренних пользователей. Я понимаю необходимость обеспечения безопасности и конфиденциальности, но считаю эту политику немного чрезмерной.   -  person Corin    schedule 25.04.2010
comment
если это действительно приложение для интрасети, то вообще не использовать проверку подлинности с помощью форм? Используйте сетевые учетные данные пользователей   -  person house9    schedule 25.04.2010
comment
Я предложил это, но они настаивали на использовании проверки подлинности с помощью форм.   -  person Corin    schedule 25.04.2010
comment
Вы должны отправить ссылку на это обсуждение создателям спецификаций. +1 за то, как получилось обсуждение. Изучение разных частей проблемы.   -  person Mikael Svenson    schedule 25.04.2010


Ответы (5)


<input type="password" name="password" style="color:White;"/>

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

Но проще всего вместо этого использовать z-index, чтобы поместить изображение или цветной DIV поверх поля пароля. Возможно, лучше всего подойдет анимированный gif с линией символов *, которая случайным образом увеличивается и уменьшается — это полностью запутает зрителей! :-)

То, как пользователь даже узнает, что поле выбрано, - это еще одна проблема, с которой вы столкнетесь, возможно, какой-то дополнительный javascript, чтобы обнаружить и сообщить им об этом.

person Ian Mercer    schedule 25.04.2010
comment
Я думаю, что некоторые браузеры будут показывать мигание курсора в поле. Не уверен, что это можно отключить, изменив цвет. - person Mikael Svenson; 25.04.2010

Если вы должны (что я согласен с @Ando, ​​что вы не должны из-за проблем с пользовательским интерфейсом), я бы использовал javascript (onkeydown), чтобы скопировать каждый символ в скрытое поле ввода и удалить ключ, введенный в поле.

Это позволит вам получить пароль при обратной передаче, оставив поле ввода пустым для пользователя.

Конечно, если пользователь нажимает клавиши со стрелками, удаление или возврат, вам придется решить, как с этим справиться.

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

person Mikael Svenson    schedule 24.04.2010
comment
Полностью согласен с каждым вашим ответом. Однако это корпоративная политика, которая в настоящее время указана как «Предпочтительная», а не «Обязательная». Я также хотел бы оспорить спецификацию из-за создания дополнительной работы для администраторов в отношении сброса заблокированных учетных записей пользователей и сброса паролей. В любом случае, я просто подумал, что задам вопрос и посмотрю, есть ли другой способ сделать это без использования Javascript и скрытого поля. Я думал о создании панели обновления Ajax и сохранении ее в памяти в событии textbox textchanged. Мысли?? - person Corin; 24.04.2010
comment
Конечно, вы можете использовать Ajax и обрабатывать нажатия клавиш в некоторой пользовательской переменной на стороне сервера вместо использования скрытого поля. Та же логика, другое хранилище. Для меня решение javascript было бы проще реализовать, но они оба делали бы одно и то же. - person Mikael Svenson; 24.04.2010
comment
Моя проблема с использованием Javascript и сохранением в скрытом поле заключается в том, что пользователь просматривает источник страницы и видит ее. Хотя я мог бы отключить правый щелчок, но опция в меню все равно была бы там. - person Corin; 25.04.2010
comment
Многие онлайн-банки используют апплеты Java (хотя они показывают точки для каждого символа). Это предотвратит просмотр источника. Как бы flash и silverlight. Теперь ваша задача — внедрить его и дождаться жалоб пользователей ;) - person Mikael Svenson; 25.04.2010
comment
Я даже не могу показать точки. Я не могу предоставить конечным пользователям обратную связь, пока они вводят свой пароль. - person Corin; 25.04.2010
comment
Конечно, вариант состоит в том, чтобы дополнять запись, пока пользователь печатает, и использовать некоторые изображения на стороне входа в систему, которые меняются при каждом нажатии клавиши, т. Е. Lotus Notes для всех. - person Corin; 25.04.2010
comment
Использование меняющегося изображения, когда пользователь вводит пароль, является хорошей идеей. Пусть пользователь увидит, что что-то происходит. Объедините это со скрытым полем, переменной javascript или вызовом ajax для каждой буквы, и у вас должно быть первое решение для представления в вашем проекте. - person Mikael Svenson; 25.04.2010

Хотя я также согласен со всеми остальными, что это плохая идея, я понимаю, что иногда вам приходится делать то, с чем вы не согласны.

Я бы предположил, что сделал Микаэль, но он уже сделал это. :)
Резюмируя:

Я бы использовал javascript (onkeydown), чтобы скопировать каждый символ в скрытое поле ввода и удалить ключ, введенный в поле.

Это позволит вам получить пароль при обратной передаче, оставив поле ввода пустым для пользователя.

Конечно, если пользователь нажимает клавиши со стрелками, удаление или возврат, вам придется решить, как с этим справиться.

Вы сказали:

Моя проблема с использованием Javascript и сохранением в скрытом поле заключается в том, что пользователь просматривает источник страницы и видит ее.

Я почти уверен, что просмотр источника должен показывать вам только то, что было загружено изначально, а не то, что ввел пользователь. Однако есть инструменты (например, надстройки Firefox), которые могут это сделать. Вы можете сохранить значение в переменной javascript и поместить пароль в скрытое поле только при его публикации или использовать какой-либо запрос ajax для аутентификации. Тем не менее, с правильными аддонами кто-то может найти и это.

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

person drs9222    schedule 25.04.2010

Согласитесь, что это не лучшая идея...

1) Когда вы начинаете печатать, при каждом нажатии клавиши ограничивайте ввод определенного символа как части пароля (например, канал), затем, когда пользователь вводит, добавляйте произвольное количество каналов (например, от 0 до 4 каналов), а затем просто удалить эти серверные?

2) Добавьте их в скрытое поле... если пользователь выполнит View_Source, он увидит только исходное значение поля, т.е. будет пустым... просто не забудьте очистить значение, если вам нужно, в зависимости от того, как оно визуализированный (управление скрытым полем веб-формы asp.net) и т. д.

3) Иметь 2 ящика для паролей, для которых нужно 2 пароля (так же плохая идея)

person Mark Redman    schedule 25.04.2010

Я подтвердил требование у сотрудника службы безопасности и, видимо, не прочитал требование. Тем не менее, я видел приложения на базе Windows, выполняющие это. Курсор перемещается при каждом нажатии клавиши, но звездочка, звездочка или полоса не используются. Спасибо всем за т.е. предложения и комментарии.

person Corin    schedule 30.04.2010