Вопрос

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

Показательный пример:Один из наших государственных заказчиков недавно обнаружил, что браузер предоставляет удобную функцию для сохранения вашего пароля.Мы все знаем, что это существует уже некоторое время и является совершенно необязательным, и конечный пользователь сам решает, разумно ли это использовать или нет.Однако в данный момент поднялся небольшой шум, и от нас требуют найти способ отключить эту функциональность для нашего сайта.

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

Любая помощь приветствуется.

Это было полезно?

Решение

Я не уверен, будет ли это работать во всех браузерах, но вам следует попробовать установить autocomplete="выкл" в форме.

<form id="loginForm" action="login.cgi" method="post" autocomplete="off">

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

От http://developer.mozilla.org/En/How_to_Turn_Off_Form_Autocompletion

Некоторые незначительные исследования показывают, что это работает в IE, но я не оставлю никаких гарантий ;)

@Джозеф:Если это строгое требование для прохождения проверки XHTML с фактической разметкой (хотя не знаю, почему это было бы так), вы теоретически могли бы впоследствии добавить этот атрибут с помощью javascript, но тогда пользователи с отключенным js (вероятно, незначительное количество вашей пользовательской базы или ноль, если вашему сайту требуется js) все равно сохранят свои пароли.

Пример с jQuery:

$('#loginForm').attr('autocomplete', 'off');

Другие советы

Я некоторое время боролся с этой проблемой, придав ей уникальный поворот.Привилегированные пользователи не могли заставить сохраненные пароли работать на них, но обычным пользователям это было необходимо.Это означало, что привилегированным пользователям приходилось входить в систему дважды, причем во второй раз без применения сохраненных паролей.

С учетом этого требования стандарт autocomplete="off" метод работает не во всех браузерах, поскольку пароль, возможно, был сохранен при первом входе в систему.Коллега нашел решение заменить поле пароля, когда оно было сфокусировано, новым полем пароля, а затем сосредоточиться на новом поле пароля (затем подключить тот же обработчик событий).Это сработало (за исключением того, что это вызвало бесконечный цикл в IE6).Может быть, был какой-то способ обойти это, но это вызывало у меня мигрень.

Наконец, я попытался просто указать имя пользователя и пароль вне формы.К моему удивлению, это сработало!Он работал в IE6 и текущих версиях Firefox и Chrome в Linux.Я не тестировал его дальше, но подозреваю, что он работает в большинстве, если не во всех браузерах (но меня бы не удивило, если бы существовал браузер, которому было бы все равно, если бы не было формы).

Вот несколько примеров кода, а также немного jQuery, чтобы заставить его работать:

<input type="text" id="username" name="username"/>
<input type="password" id="password" name="password"/>

<form id="theForm" action="/your/login" method="post">
  <input type="hidden" id="hiddenUsername" name="username"/>
  <input type="hidden" id="hiddenPassword" name="password"/>
  <input type="submit" value="Login"/>
</form>

<script type="text/javascript" language="JavaScript">
  $("#theForm").submit(function() {
    $("#hiddenUsername").val($("#username").val());
    $("#hiddenPassword").val($("#password").val());
  });
  $("#username,#password").keypress(function(e) {
    if (e.which == 13) {
      $("#theForm").submit();
    }
  });
</script>

Просто используй

onfocus только для чтения="this.removeAttribute('только для чтения');"

в дополнение к

автозаполнение="выкл."

к входным данным, которые вы не хотите запоминать, относятся данные формы (username, password, и т.д.), как показано ниже:

<input type="text" name="UserName" autocomplete="off" readonly 
    onfocus="this.removeAttribute('readonly');" >

<input type="password" name="Password" autocomplete="off" readonly 
    onfocus="this.removeAttribute('readonly');" >

Протестировано на последних версиях основных браузеров, т.е. Google Chrome, Mozilla Firefox, Microsoft Edge, и т.д.и работает как по волшебству.Надеюсь, это поможет...

Что ж, это очень старый пост, но все же я приведу свое решение, которого моя команда долго пыталась достичь.Мы просто добавили новое поле input type="пароль" внутри формы и превратили его в div, сделав div скрытым.Убедился, что этот div находится перед фактическим вводом пароля.Это сработало для нас, и это не дало никакой возможности Сохранить пароль

Плюхнуть - http://plnkr.co/edit/xmBR31NQMUgUhYHBiZSg?p=preview

HTML:

<form method="post" action="yoururl">
      <div class="hidden">
        <input type="password"/>
      </div>
      <input type="text" name="username" placeholder="username"/>
      <input type="password" name="password" placeholder="password"/>
    </form>

CSS:

.hidden {display:none;}

Вы можете запретить браузеру сопоставлять формы, произвольно выбрав имя, используемое для поля пароля при каждом показе.Затем браузер видит пароль для того же URL, но не может быть уверен, что это тот самый тот же пароль.Может быть, это контролирует что-то еще.

Обновить: обратите внимание, что это должно быть в дополнение к использование автозаполнения или других тактик, а не их замена, по причинам, указанным другими.

Также обратите внимание, что это только помешает браузеру автоматическое заполнение пароль.Это не помешает ему хранение пароль на любом произвольном уровне безопасности, который браузер выберет для использования.

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

Самый чистый способ - это использовать autocomplete="off" атрибут тега, но Firefox неправильно подчиняется ему при переключении полей с помощью Tab.

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

<input type="text" id="username" name="username"/>
<input type="password" id="prevent_autofill" autocomplete="off" style="display:none" tabindex="-1" />
<input type="password" id="password" autocomplete="off" name="password"/>

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

Примечание:это фактически остановит автозаполнение пароля, поскольку FF "сохранит" значение #prevent_autofill (который пуст) и попытается заполнить все сохраненные пароли там, так как он всегда использует первый type="password" входные данные, которые он находит в DOM после соответствующего ввода "username".

Я протестировал это добавление autocomplete="off" в тег формы во всех основных браузерах.На самом деле, большинство людей в США до сих пор используют IE8.

  1. IE8, IE9, IE10, Firefox, Safari работают нормально.

    Браузер не запрашивает "сохранить пароль".Кроме того, ранее сохраненные имя пользователя и пароль не заполнены.

  2. Chrome и IE 11 не поддерживают функцию автозаполнения ="выкл."
  3. FF поддержка автозаполнения="выкл.".но иногда заполняются существующие сохраненные учетные данные.

Обновлено 11 июня 2014 г.

Наконец, ниже приведено кроссбраузерное решение, использующее javascript, и оно прекрасно работает во всех браузерах.

Необходимо удалить тег "форма" в форме входа в систему.После проверки на стороне клиента поместите эти учетные данные в скрытую форму и отправьте их.

Кроме того, добавьте два метода.один для проверки "validateLogin()", а другой для прослушивания события ввода при нажатии enter в текстовом поле / пароль / кнопка "checkAndSubmit()".потому что теперь форма входа в систему не имеет тега form, поэтому событие enter здесь не работает.

HTML

<form id="HiddenLoginForm" action="" method="post">
<input type="hidden" name="username" id="hidden_username" />
<input type="hidden" name="password" id="hidden_password" />
</form>

Username: <input type="text" name="username" id="username" onKeyPress="return checkAndSubmit(event);" /> 
Password: <input type="text" name="password" id="password" onKeyPress="return checkAndSubmit(event);" /> 
<input type="button" value="submit" onClick="return validateAndLogin();" onKeyPress="return checkAndSubmit(event);" /> 

Javascript

//For validation- you can modify as you like
function validateAndLogin(){
  var username = document.getElementById("username");
  var password = document.getElementById("password");

  if(username  && username.value == ''){
    alert("Please enter username!");
    return false;
  }

  if(password && password.value == ''){
    alert("Please enter password!");
    return false;
  }

  document.getElementById("hidden_username").value = username.value;
  document.getElementById("hidden_password").value = password.value;
  document.getElementById("HiddenLoginForm").submit();
}

//For enter event
function checkAndSubmit(e) {
 if (e.keyCode == 13) {
   validateAndLogin();
 }
}

Удачи вам!!!

Не совсем - единственное, что вы могли бы реально сделать, это дать совет на сайте;возможно, перед их первым входом в систему вы могли бы показать им форму с информацией, указывающей на то, что им не рекомендуется разрешать браузеру сохранять пароль.

Тогда пользователь немедленно последует совету, запишет пароль на листе бумаги и приклеит его к своему монитору.

То, что я делал, - это комбинация автозаполнения ="выкл." и очистки полей пароля с помощью javascript / jQuery.

Пример jQuery:

$(function() { 
    $('#PasswordEdit').attr("autocomplete", "off");
    setTimeout('$("#PasswordEdit").val("");', 50); 
});

Используя setTimeout() вы можете подождать, пока браузер заполнит поле, прежде чем вы его очистите, в противном случае браузер всегда будет заполняться автоматически после того, как вы очистите поле.

если autocomplete="off" не работает ... удалите тег формы и используйте вместо него тег div, затем передайте значения формы с помощью jquery на сервер.У меня это сработало.

Поскольку автозаполнение="выкл." не работает для полей пароля, приходится полагаться на javascript.Вот простое решение, основанное на ответах, найденных здесь.

Добавьте атрибут data-password-autocomplete="выкл." в поле вашего пароля:

<input type="password" data-password-autocomplete="off">

Включите следующие JS:

$(function(){
    $('[data-password-autocomplete="off"]').each(function() {
        $(this).prop('type', 'text');
        $('<input type="password"/>').hide().insertBefore(this);
        $(this).focus(function() {
            $(this).prop('type', 'password');
        });
    });     
});

Это решение работает как для Chrome, так и для FF.

Просто чтобы люди понимали - атрибут 'autocomplete' работает большую часть времени, но опытные пользователи могут обойти его с помощью букмарклета.

Сохранение ваших паролей в браузере фактически повышает защиту от кейлоггинга, поэтому, возможно, самый безопасный вариант - сохранить пароли в браузере, но защитить их мастер-паролем (по крайней мере, в Firefox).

У меня есть обходной путь, который может помочь.

Вы могли бы сделать пользовательский взлом шрифта.Итак, создайте пользовательский шрифт, например, со всеми символами в виде точки / круга / звезды.Используйте это в качестве пользовательского шрифта для вашего веб-сайта.Проверьте, как это сделать в inkscape: как создать свой собственный шрифт

Затем в вашей форме входа в систему используйте:

<form autocomplete='off'  ...>
   <input type="text" name="email" ...>
   <input type="text" name="password" class="password" autocomplete='off' ...>
   <input type=submit>
</form>

Затем добавьте свой css:

@font-face {
    font-family: 'myCustomfont';
    src: url('myCustomfont.eot');
    src: url('myCustomfont?#iefix') format('embedded-opentype'),
         url('myCustomfont.woff') format('woff'),
         url('myCustomfont.ttf') format('truetype'),
         url('myCustomfont.svg#myCustomfont') format('svg');
    font-weight: normal;
    font-style: normal;

}
.password {
  font-family:'myCustomfont';
}

Довольно кроссбраузерная совместимость.Я пробовал IE6 +, FF, Safari и Chrome.Просто убедитесь, что шрифт oet, который вы конвертируете, не поврежден.Надеюсь, это поможет?

Маркус поднял важный вопрос.Я решил поискать в autocomplete атрибут и получил следующее:

Единственным недостатком использования этого атрибута является то, что он не является стандартным (он работает в браузерах IE и Mozilla), и может привести к сбою проверки XHTML .Я думаю, что это тот случай, когда разумно прервать проверку однако. (Источник)

Итак, я должен был бы сказать, что, хотя это не работает на 100% по всем направлениям, оно обрабатывается в основных браузерах, так что это отличное решение.

Самый простой способ решить эту проблему - поместить поля ввода вне тега ФОРМЫ и добавить два скрытых поля внутри тега ФОРМЫ.Затем в прослушивателе событий отправки перед отправкой данных формы на сервер скопируйте значения из видимых входных данных в невидимые.

Вот пример (вы не можете запустить его здесь, так как действие формы не настроено на реальный сценарий входа):

<!doctype html>
<html>
<head>
  <title>Login & Save password test</title>
  <meta charset="utf-8">
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
</head>

  <body>
      <!-- the following fields will show on page, but are not part of the form -->
      <input class="username" type="text" placeholder="Username" />
      <input class="password" type="password" placeholder="Password" />

      <form id="loginForm" action="login.aspx" method="post">
        <!-- thw following two fields are part of the form, but are not visible -->
        <input name="username" id="username" type="hidden" />
        <input name="password" id="password" type="hidden" />
        <!-- standard submit button -->
        <button type="submit">Login</button>
      </form>

    <script>
      // attache a event listener which will get called just before the form data is sent to server
      $('form').submit(function(ev) {
        console.log('xxx');
        // read the value from the visible INPUT and save it to invisible one
        // ... so that it gets sent to the server
        $('#username').val($('.username').val());
        $('#password').val($('.password').val());
      });
    </script>

  </body>
</html>

Мой обходной путь js (jquery) заключается в том, чтобы измените тип ввода пароля на текст в форме отправки.Пароль может стать видимым на секунду, поэтому я также скрываю ввод непосредственно перед этим. Я бы предпочел не использовать это для форм входа в систему, но это полезно (вместе с автозаполнением="выкл."), например, внутри административной части веб-сайта.

Попробуйте поместить это в консоль (с помощью jquery), прежде чем отправлять форму.

$('form').submit(function(event) {
    $(this).find('input[type=password]').css('visibility', 'hidden').attr('type', 'text');
});

Протестировано в Chrome 44.0.2403.157 (64-разрядная версия).

Я пробовал выше autocomplete="off" и все же что-нибудь успешное.если вы используете angular js, я рекомендую использовать button и ng-click.

<button type="button" class="" ng-click="vm.login()" />

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

Спасибо за вопрос и ответы.

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

Чтобы избавиться от запоминания пароля, я, наконец, обработал пароль как поле ввода и "размыл" набранный текст.

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

Вам нужно будет оценить риск использования приведенного ниже предложения в сравнении с опцией запоминания пароля в навигаторе.

Хотя запоминанием пароля может управлять пользователь (отменять его для каждого сайта), это нормально для персонального компьютера, а не для "общедоступного" компьютера.

В моем случае это касается ERP-системы, работающей на общих компьютерах, поэтому я попробую свое решение ниже.

<input style="background-color: rgb(239, 179, 196); color: black; text-shadow: none;" name="password" size="10" maxlength="30" onfocus="this.value='';this.style.color='black'; this.style.textShadow='none';" onkeypress="this.style.color='transparent'; this.style.textShadow='1px 1px 6px green';" autocomplete="off" type="text">

Один из известных мне способов - использовать (например) JavaScript для копирования значения из поля пароля перед отправкой формы.

Основная проблема при этом заключается в том, что решение привязано к JavaScript.

С другой стороны, если это может быть привязано к JavaScript, вы могли бы также хэшировать пароль на стороне клиента перед отправкой запроса на сервер.

Реальная проблема гораздо глубже, чем просто добавление атрибутов в ваш HTML-код - это обычная проблема безопасности, вот почему люди изобрели аппаратные ключи и другие безумные штуки для обеспечения безопасности.

Представьте, что у вас есть autocomplete="выкл.", который отлично работает во всех браузерах.Поможет ли это с безопасностью?Конечно, нет.Пользователи будут записывать свои пароли в учебниках, на стикерах, прикрепленных к их мониторам, где их сможет увидеть каждый посетитель офиса, сохранять их в текстовые файлы на рабочем столе и так далее.

Как правило, веб-приложение и веб-разработчик никоим образом не несут ответственности за безопасность конечного пользователя.Защитить себя могут только конечные пользователи.В идеале они ДОЛЖНЫ держать все пароли у себя в голове и использовать функцию сброса пароля (или обратиться к администратору) на случай, если они его забыли.В противном случае всегда будет существовать риск того, что пароль может быть каким-то образом замечен и украден.

Таким образом, либо у вас есть какая-то сумасшедшая политика безопасности с аппаратными ключами (например, некоторые банки предлагают для интернет-банкинга, который в основном использует двухфакторную аутентификацию), либо БЕЗОПАСНОСТИ в принципе нет.Ну, это, конечно, немного преувеличено.Важно понимать, от чего вы пытаетесь защититься:

  1. Несанкционированный доступ невозможен.В принципе, достаточно самой простой формы входа в систему.Иногда принимаются дополнительные меры, такие как случайные секретные вопросы, капчи, ужесточение пароля и т.д.
  2. Обнюхивание удостоверения личности.Протокол HTTPS НЕОБХОДИМ, если люди получают доступ к вашему веб-приложению из общедоступных точек доступа Wi-Fi и т.д.Упомяните, что даже при использовании HTTPS вашим пользователям необходимо регулярно менять свои пароли.
  3. Инсайдерская атака.Таких примеров множество, начиная от простой кражи ваших паролей из браузера или тех, которые вы записали где-нибудь на рабочем столе (не требует никаких ИТ-навыков) и заканчивая подделкой сеанса и перехватом трафика локальной сети (даже зашифрованного) и дальнейшим доступом к веб-приложению так, как будто это был другой конечный пользователь.

В этом конкретном посте я вижу неадекватные требования, предъявляемые к разработчику, которые он никогда не сможет решить из-за характера проблемы - безопасности конечного пользователя.Моя субъективная точка зрения заключается в том, что разработчик должен в принципе сказать "НЕТ" и указать на проблему требований, а не тратить время на такие задачи, честно говоря.Это не совсем повысит безопасность вашей системы, скорее приведет к появлению чехлов с наклейками на мониторах.К сожалению, некоторые начальники слышат только то, что они хотят услышать.Однако, если бы я был на вашем месте, я бы попытался объяснить, откуда берется реальная проблема, и что autocomplete ="off" не решит ее, если только это не заставит пользователей хранить все свои пароли исключительно в голове!Разработчик, со своей стороны, не может полностью защитить пользователей, пользователи должны знать, как пользоваться системой, и в то же время не раскрывать свою конфиденциальную / защищенную информацию, и это выходит далеко за рамки аутентификации.

Столкнулся с той же проблемой HIPAA и нашел относительно простое решение,

  1. Создайте скрытое поле пароля с именем поля в виде массива.

    <input type="password" name="password[]" style="display:none" />
    
  2. Используйте тот же массив для фактического поля пароля.

    <input type="password" name="password[]" />
    

Браузер (Chrome) может предложить вам "Сохранить пароль", но независимо от того, выберет ли пользователь сохранить, при следующем входе в систему пароль автоматически заполнит поле скрытого пароля, нулевой слот в массиве, оставив 1-й слот пустым.

Я попытался определить массив, например "пароль [часть 2]", но он все равно запомнился.Я думаю, что это отбрасывает его, если это неиндексированный массив, потому что у него нет выбора, кроме как отбросить его в первую очередь.

Затем вы используете выбранный вами язык программирования для доступа к массиву, например PHP,

echo $_POST['password'][1];

Поскольку большая часть autocomplete предложения, включая принятый ответ, не работают в современных веб-браузерах (т.е.менеджеры паролей веб-браузера игнорируют autocomplete), более новым решением является переключение между password и text введите и приведите цвет фона в соответствие с цветом текста, если поле является обычным текстовым полем, которое продолжает скрывать пароль, оставаясь настоящим полем пароля, когда пользователь (или такая программа, как KeePass) вводит пароль.Браузеры не запрашивают сохранение паролей, которые хранятся в обычных текстовых полях.

Преимущество этого подхода заключается в том, что он допускает постепенное улучшение и, следовательно, не требует Javascript для того, чтобы поле функционировало как обычное поле пароля (вы также могли бы начать с обычного текстового поля и применить тот же подход, но это на самом деле не соответствует HIPAA PHI / PII).Этот подход также не зависит от скрытых форм / полей, которые необязательно могут быть отправлены на сервер (поскольку они скрыты), и некоторые из этих трюков также не работают в нескольких современных браузерах.

Плагин jQuery:

https://github.com/cubiclesoft/php-flexforms-modules/blob/master/password-manager/jquery.stoppasswordmanager.js

Соответствующий исходный код по приведенной выше ссылке:

(function($) {
$.fn.StopPasswordManager = function() {
    return this.each(function() {
        var $this = $(this);

        $this.addClass('no-print');
        $this.attr('data-background-color', $this.css('background-color'));
        $this.css('background-color', $this.css('color'));
        $this.attr('type', 'text');
        $this.attr('autocomplete', 'off');

        $this.focus(function() {
            $this.attr('type', 'password');
            $this.css('background-color', $this.attr('data-background-color'));
        });

        $this.blur(function() {
            $this.css('background-color', $this.css('color'));
            $this.attr('type', 'text');
            $this[0].selectionStart = $this[0].selectionEnd;
        });

        $this.on('keydown', function(e) {
            if (e.keyCode == 13)
            {
                $this.css('background-color', $this.css('color'));
                $this.attr('type', 'text');
                $this[0].selectionStart = $this[0].selectionEnd;
            }
        });
    });
}
}(jQuery));

ДЕМОНСТРАЦИЯ:

https://barebonescms.com/demos/admin_pack/admin.php

Нажмите "Добавить запись" в меню, а затем прокрутите страницу вниз до пункта "Модуль:Остановите менеджер паролей".

Отказ от ответственности:Хотя этот подход работает для зрячих людей, могут возникнуть проблемы с программным обеспечением для чтения с экрана.Например, программа чтения с экрана может прочитать пароль пользователя вслух, потому что она видит обычное текстовое поле.Также могут возникнуть другие непредвиденные последствия использования вышеупомянутого плагина.Изменение функциональности встроенного веб-браузера следует производить осторожно, тестируя широкий спектр условий и крайних случаев.

Есть ли у сайта способ сообщить браузеру, чтобы он не предлагал запоминать пароли?

Веб-сайт сообщает браузеру, что это пароль, используя <input type="password">.Так что, если вы должен сделайте это с точки зрения веб-сайта, тогда вам придется это изменить.(Очевидно, я этого не рекомендую).

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

Если вы не хотите доверять флагу автозаполнения, вы можете убедиться, что пользователь вводит данные в поле, используя событие onchange.Приведенный ниже код представляет собой простую HTML-форму.Элемент скрытой формы password_edited начинается с значения 0.Когда значение password изменяется, JavaScript вверху (функция pw_edited) изменяет значение на 1.При нажатии кнопки здесь проверяется код valueenter перед отправкой формы.Таким образом, даже если браузер игнорирует вас и автоматически заполняет поле, пользователь не сможет перейти на страницу входа, не введя поле пароля.Кроме того, не забудьте опустить поле пароля, когда будет установлен фокус.В противном случае вы можете добавить символ в конце, затем вернуться назад и удалить его, чтобы обмануть систему.Я рекомендую дополнительно добавить автозаполнение ="выкл" к паролю, но этот пример показывает, как работает код резервного копирования.

<html>
  <head>
    <script>
      function pw_edited() {
        document.this_form.password_edited.value = 1;
      }
      function pw_blank() {
        document.this_form.password.value = "";
      }
      function submitf() {
        if(document.this_form.password_edited.value < 1) {
          alert("Please Enter Your Password!");
        }
        else {
         document.this_form.submit();
        }
      }
    </script>
  </head>
  <body>
    <form name="this_form" method="post" action="../../cgi-bin/yourscript.cgi?login">
      <div style="padding-left:25px;">
        <p>
          <label>User:</label>
          <input name="user_name" type="text" class="input" value="" size="30" maxlength="60">
        </p>
        <p>
          <label>Password:</label>
          <input name="password" type="password" class="input" size="20" value="" maxlength="50" onfocus="pw_blank();" onchange="pw_edited();">
        </p>
        <p>
          <span id="error_msg"></span>
        </p>
        <p>
          <input type="hidden" name="password_edited" value="0">
          <input name="submitform" type="button" class="button" value="Login" onclick="return submitf();">
        </p>
      </div>
    </form>
  </body>
</html>

автозаполнение = "выкл." не работает для отключения менеджера паролей в Firefox 31 и, скорее всего, не в некоторых более ранних версиях.

Ознакомьтесь с обсуждением этой проблемы в mozilla:https://bugzilla.mozilla.org/show_bug.cgi?id=956906

Мы хотели использовать второе поле пароля для ввода одноразового пароля, сгенерированного токеном.Теперь мы используем текстовый ввод вместо ввода пароля.:-(

Мне была поставлена аналогичная задача отключить автоматическое заполнение имени пользователя и паролей браузером, после множества проб и ошибок я нашел приведенное ниже решение оптимальным.Просто добавьте приведенные ниже элементы управления перед вашими исходными элементами управления.

<input type="text" style="display:none">
<input type="text" name="OriginalLoginTextBox">

<input type="password" style="display:none">
<input type="text" name="OriginalPasswordTextBox">

Это нормально работает для IE11 и Chrome 44.0.2403.107

autocomplete="off" работает для большинства современных браузеров, но другой метод, который я использовал, который успешно работал с Epiphany (браузер на базе WebKit для GNOME), заключается в сохранении случайно сгенерированного префикса в состоянии сеанса (или скрытого поля, у меня случайно оказалась подходящая переменная в состоянии сеанса) и использовании этого для изменения имени полей.Epiphany по-прежнему хочет сохранить пароль, но при возврате к форме он не будет заполнять поля.

У меня не было никаких проблем с использованием этого метода:

Используйте автозаполнение="выкл.", добавьте скрытое поле пароля, а затем еще одно, не скрытое.Браузер пытается автоматически заполнить скрытый файл, если он не учитывает автозаполнение ="выкл."

Другое решение состоит в том, чтобы создать ПУБЛИКАЦИЮ с использованием скрытой формы, где все входные данные имеют тип hidden.Видимая форма будет использовать ввод типа "пароль".Последняя форма никогда не будет отправлена, и поэтому браузер вообще не сможет перехватить операцию входа в систему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top