Firefox вводит пароль в поле имени пользователя - PullRequest
4 голосов
/ 29 января 2010

Это странно: если я войду в свое приложение, попросите Firefox сохранить имя пользователя / пароль. Затем выйдите из системы и вернитесь к экрану входа. Firefox вводит пароль в поле ввода имени пользователя, делая его видимым!

Есть идеи, что может вызвать проблему? Вот HTML-код моей формы, хотя я проверял ее 10 миллиардов раз.

<form action="<?php echo WWWROOT ?>login/" autocomplete="on" method="post" name="extranetLoginForm" id="extranetLoginForm" >
 <ul id="formlog">
  <li id="liloginfield">
   <label for="loginfield" id="loginfieldlab"><span class="required">
    <img alt="user-icon" src="<?php echo WWWROOT ?>_img/icons/user.png" />
    Mon nom d'utilisateur : <small style="color:#AAA">(prenom.nom)</small></span>
   </label>
   <input id="loginfield" name="loginfield" class="text required ui-corner-all" type="text" tabindex="1" accesskey="l"  />
   <label for="loginfield" class="error" id="error1">
    <img alt="erreur-login" src="<?php echo WWWROOT ?>_img/icons/exclamation.png" />Ce champ est obligatoire, r&eacute;digez comme ceci: prenom.nom</label>
  </li>
  <li id="lipass">
   <label for="password">
    <span class="required"><img alt="lost-pass" src="<?php echo WWWROOT ?>_img/icons/key.png" />mot de passe
    <small class="help_form">(<a id="forgotPasswordLink" href="#">oublié</a> ?)</small></span>
   </label>
   <input name="password" type="password" class="text required ui-corner-all" id="password" minlength="4" maxlength="20" tabindex="2" accesskey="p" />
   <small  class="checker" ></small>
   <input type="hidden" name="errorpass" id="errorpass" value="0"/>
   <label for="password" class="error" id="error2"><img alt="exclamation" src="<?php echo WWWROOT ?>_img/icons/exclamation.png" />Ce champ est obligatoire.</label>
  </li>
  <li>
   <input name="rememberme" type="checkbox" id="rememberme" value="forever" tabindex="90" /><label for="rememberme"> Se souvenir de moi</label></p>
  </li>
  <li class="centeredtext">
    <input type="hidden" name="goto"  id="goto" value="<?php echo WWWROOT.$_SESSION['AFTER_LOGIN_GOTO'] ?>"/>
    <input type="hidden" name="login_type"  id="loginTypeNormal" value="normal"/>
    <input type="submit" class="ui-state-default button ui-corner-all short_input" value="GO!" id="submitlogin" tabindex="1" accesskey="L" />
   </li>
   <li id="lipassforget">
    <label class="centered info"><a class="dark_link openidLink" href="#" id="openidLink">avec OpenID</a></label>
   </li>
  </ul>
</form>

Ответы [ 2 ]

2 голосов
/ 29 января 2010

Вы случайно не меняли имена полей, т. Е. Было ли поле пароля, называемое loginfield, в какой-то момент, когда имя пользователя / пароль были сохранены Firefox? Согласно wiki Mozilla, менеджер паролей сохраняет имя поля с сохраненными данными для входа в систему, так что оно может быть связано с этим.

Вы пытались удалить имя пользователя / пароль из менеджера паролей Firefox и посмотреть, произойдет ли это снова при попытке сохранить данные для входа еще раз?

0 голосов
/ 05 января 2012

Менеджер паролей Mozilla Firefox странный. У него свой разум.

https://wiki.mozilla.org/Firefox%3aPassword_Manager

Если вы вошли в свое приложение с помощью Mozilla, и у вашего поля входа есть идентификатор «L», а у вашего поля пароля - идентификатор «P», он запоминает эти идентификаторы, чтобы можно было ввести значения для вас. Это происходит, только если вы отметили это: Параметры> Безопасность> Флажок Запомнить пароль.

enter image description here

Теперь, если у вас есть страница (или форма ... не совсем уверенная) с AT LEAST одним полем ввода с идентификатором, который соответствует либо "L", либо "P", Mozilla Password Manager (встроенный в браузер) будет попытайтесь использовать его интеллект, чтобы заполнить значения для вас, даже если оба поля отсутствуют. Смотрите пример ниже для лучшей картины. Это может помочь вам решить вашу проблему.

Позвольте мне объяснить ...

Я работаю над программным обеспечением для криминалистики, где пользователям приходится проверять все, что они делают в каждом рабочем процессе, поэтому для этого требуется их пароль, поэтому, если наши клиенты когда-либо будут проходить аудит FDA, у нас будет запись рабочего процесса. Таким образом, у нас есть поле пароля в нашем приложении для каждой кнопки, но, поскольку пользователь уже вошел в систему, мы не хотим, чтобы они также вводили свой логин, поэтому это поле подавляется. Это то, что я должен был сделать, чтобы эта методология работала (для Mozilla). Мне нужно было добавить скрытое (display: none) поле ввода.

<input runat="server" type="text" style="display:none;">
<asp:TextBox id="TxtPassword" Runat="server" Width="80" EnableViewState="False" TextMode="Password"></asp:TextBox>

Элемент управления TextBox фактически визуализируется в поле ввода в HTML. До того, как я исправил эту проблему, у меня было поле поиска для страницы, предшествующей полю пароля, и оно вставило имя пользователя в это поле. Если бы у меня не было скрытого поля ввода перед полем ввода с идентификатором «P» (или в данном случае «TxtPassword»), оно все равно помещало бы логин в мое поле поиска, потому что оно предшествовало полю ввода с идентификатором «TxtPassword». ». Наличие скрытого поля (которое скрыто) предназначено для устранения этой проблемы в Mozilla. Имя пользователя входит в это поле ввода и замечает, что у него даже нет идентификатора, однако Mozilla помещает имя входа в это поле из-за настройки Mozilla, показанной на изображении в диалоговом окне выше.

...