Отключить функциональность браузера "Сохранить пароль"

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

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

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

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

Ответ 1

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

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

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

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

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

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

Пример с jQuery:

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

Ответ 2

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

С помощью этого требования стандартный метод 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>

Ответ 3

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

Plunk - 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;}

Ответ 4

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

readonly onfocus = "this.removeAttribute('readonly');"

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

автозаполнения = "выключено"

на вход (-ы), который вы не хотите запоминать данные формы (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 и т.д. И работает как шарм. Надеюсь это поможет...

Ответ 5

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

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

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

Ответ 6

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

Ответ 7

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

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

<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".

Ответ 8

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

  • IE8, IE9, IE10, Firefox, Safari работают отлично.

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

  • Chrome и IE 11 не поддерживают функцию autocomplete = "off"
  • FF, поддерживающий автозаполнение = "off" . но иногда существующие сэкономленные учетные данные заполнены.

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

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

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

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

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();
 }
}

Удачи!!!

Ответ 9

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

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

Ответ 10

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

Пример jQuery:

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

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

Ответ 11

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

Ответ 12

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

Добавьте в поле пароля атрибут data-password-autocomplete = "off":

<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.

Ответ 13

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

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

Ответ 14

У меня есть работа, которая может помочь.

Вы можете сделать собственный шрифт. Итак, создайте собственный шрифт со всеми символами, например, точкой/кругом/звездой. Используйте это как пользовательский шрифт для своего сайта. Проверьте, как это сделать в 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, который вы конвертируете, не поврежден. Надеюсь, что это поможет?

Ответ 15

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

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

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

Ответ 16

Самый простой способ решить эту проблему - поместить поля INPUT за пределы тега FORM и добавить два скрытых поля внутри тега FORM. Затем в прослушиватель событий отправки до того, как данные формы будут отправлены на серверные значения копирования из видимого ввода в невидимые.

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

<!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>

Ответ 17

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

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

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

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

Ответ 18

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

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

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

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

Ответ 19

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

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

Он менее "безопасен", чем поле собственного пароля, так как выбор напечатанного текста будет показывать его как чистый текст, но пароль не запоминается. Это также зависит от активации 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">

Ответ 20

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

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

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

Ответ 21

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

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

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

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

  • Неавторизованный доступ. Простейшей формы входа достаточно. Иногда возникают дополнительные меры, например, случайные вопросы безопасности, CAPTCHA, упрощение паролей и т.д.
  • Удовлетворение учетных данных. HTTPS - это ДОЛЖНО, если люди обращаются к вашему веб-приложению из общедоступных точек доступа Wi-Fi и т.д. Упомяните, что даже имея HTTPS, ваши пользователи должны регулярно менять свои пароли.
  • Инсайдерская атака. Существует два таких примера: от простого кражи ваших паролей от браузера или от тех, что вы записали где-то на столе (не требует каких-либо ИТ-навыков), и заканчивая сессионной коваркой и перехватом сетевого трафика (даже зашифрованного) и дальнейший доступ к веб-приложению так же, как и к другому конечному пользователю.

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

Ответ 22

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

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

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

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

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

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

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

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

Ответ 23

Поскольку большинство предложений 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

Нажмите "Добавить запись" в меню, а затем прокрутите страницу вниз до "Module: Stop Password Manager".

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

Ответ 24

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

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

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

Ответ 25

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

<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>

Ответ 26

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

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

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

Ответ 27

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

<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

Ответ 28

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

Ответ 29

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

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

Ответ 30

Другое решение - сделать POST с помощью скрытой формы, где все входные данные скрыты. Видимая форма будет использовать ввод типа "пароль". Последняя форма никогда не будет отправлена, и браузер не сможет перехватить всю операцию входа.