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

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

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

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

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


person mattsmith321    schedule 28.08.2008    source источник
comment
Вы должны предоставить greasemonkey-script, чтобы люди могли его снова включить. Я не думаю, что пользователям нравится, когда их заставляют вводить пароль каждый раз ...   -  person ThiefMaster    schedule 20.12.2011
comment
Вопрос заслуживает одобрения, поскольку он полезен и ясен. С другой стороны, я не хочу, чтобы люди нашли решение этой проблемы.   -  person Ian Boyd    schedule 22.06.2012
comment
Это не всегда проблема. Я пришел сюда, потому что firefox предлагает сохранить пароль для формы, которая содержит пароль WiFi / SSID, а не форму имени пользователя / пароля для входа. Это очень раздражает, и я хочу прекратить это.   -  person srd    schedule 09.04.2014
comment
Если информация настолько важна, ее следует защищать не только паролем.   -  person Sam Watkins    schedule 08.12.2015
comment
Один из способов, которым это, кажется, работает, - это не использовать ‹form›. Если вы используете javascript для отправки данных (XHR), он вам не нужен. Я хотел отключить в системе, которая использует аутентификацию с одноразовым паролем (нет причин его хранить). Для аутентификации пользователя / прохода я бы не рекомендовал отключать эту функцию.   -  person lepe    schedule 08.03.2016
comment
Вероятно, вам нужно ослабить контроль над знакомым вам методом аутентификации и отпустить его, если он действительно противоречит требованиям. Применение политики безопасности с нарушением другой политики безопасности не делает систему более безопасной.   -  person Free Consulting    schedule 22.03.2016
comment
Вы должны поощрять использование менеджеров паролей, правильно установив autocomplete = tag. Это способ повысить безопасность.   -  person Stuart    schedule 22.01.2021
comment
@Stuart Я полагаю, что пользователю будет удобнее использовать менеджер паролей, если он не будет спрашивать, хотят ли они сохранить одноразовый код доступа. К сожалению, большинство браузеров больше не позволяют autocomplete = off отключать диспетчер паролей. Одно из объяснений состоит в том, что autocomplete = off никогда не должен иметь ничего общего с менеджерами паролей, что является допустимым моментом, но тогда должно быть что-то специально для этой цели.   -  person Imperishable Night    schedule 11.02.2021
comment
@ImperishableNight следует использовать autocomplete = одноразовый код, как показано здесь. twilio.com/blog/   -  person Stuart    schedule 14.02.2021
comment
@Stuart Вау, я не знал, что тег autocomplete = принимает так много разных значений, кроме включения и выключения. Я предполагаю, что это неверный ответ на этот конкретный вопрос, но для некоторых дубликатов этого вопроса, безусловно, может быть полезна ссылка на developer.mozilla.org/en-US/docs/Web/HTML/Attributes/.   -  person Imperishable Night    schedule 16.02.2021
comment
github.com/noppa/text-security   -  person billynoah    schedule 14.04.2021


Ответы (35)


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

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

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

Из https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion

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

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

Пример с jQuery:

$('#loginForm').attr('autocomplete', 'off');
person Markus Olsson    schedule 28.08.2008
comment
Небольшой комментарий, поскольку это меняется, HTML5 добавляет в спецификацию атрибут автозаполнения, так что теперь он действителен. - person Tyler Egeto; 10.01.2011
comment
firefox (3.6.15), похоже, вообще не касается autocomplete = off. Я попытался добавить это как в форму, так и в поле пароля, но он по-прежнему заполняет pwd, когда я нажимаю вкладку в поле имени пользователя. Я также пытался изменить атрибут name поля pwd на что-то другое, но похоже, что он использует атрибут type = password (хотя я читал, что он соответствует атрибуту name). Это тоже не работает. Что еще я могу попробовать? - person hese; 10.03.2011
comment
Вы можете использовать расширение Chrome Autocomplete = On, чтобы победить это :) chrome.google.com / webstore / detail / autocomplete-on - person Neil McGuigan; 10.08.2013
comment
К вашему сведению, Microsoft решила, что Internet Explorer 11 больше не будет учитывать autocomplete="off" для input type="password" полей. msdn.microsoft.com/en- us / library / ie / ms533486% 28v = vs.85% 29.aspx - person JW Lim; 06.03.2014
comment
но я ДЕЙСТВИТЕЛЬНО хочу, чтобы в моей форме было автозаполнение, и НЕ хочу, чтобы браузер сохранял всплывающее окно для сохранения пароля. - person vsync; 26.03.2014
comment
Так же, как @JWLim упомянул, что IE 11 прекращает поддержку отключения функции сохранения пароля, точно так же и Firefox. bugzilla.mozilla.org/show_bug.cgi?id=956906 - person Gregory Cosmo Haun; 07.05.2014
comment
@GregoryCosmoHaun Спасибо за информацию. На самом деле кажется, что браузеры отнимают у нас, разработчиков, все больше и больше возможностей: / Насколько я знаю, мы все еще можем помешать им сохранять пароли, если вы разделите поля «Имя пользователя» и «Пароль». Я упомянул об этом в моем ответе ниже. - person JW Lim; 07.05.2014
comment
да, не работает для Chrome. Независимо от того, что появляется всплывающее окно. - person st_stefanov; 30.10.2014
comment
Firefox (к сожалению) последовал примеру Microsoft и также удалил поддержку автозаполнения. Подробнее см. Комментарий 100 в следующем обсуждении проблемы: bugzilla.mozilla.org/show_bug.cgi ? id = 956906 - person Bouncing Bit; 18.12.2014
comment
Теперь не работает для Firefox 38+ mozilla.org/en-US/firefox /38.0/releasenotes - person Illuminator; 31.05.2015
comment
Это игнорируется большинством современных браузеров ... caniuse.com/#feat=input-autocomplete -onoff - person Alejandro García Iglesias; 03.06.2016
comment
Итак, каков был бы правильный ответ на этот вопрос? Несмотря на 321 голос за, этот ответ не работает. - person Azaz ul Haq; 10.12.2019
comment
Может ли кто-нибудь опубликовать обновленный ответ на Отключение функции «Сохранить пароль» в современном браузере? - person Hemant Metalia; 08.04.2020

В добавление к

autocomplete="off"

Использовать

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 и т. Д., И работает отлично. Надеюсь это поможет.

person Murat Yıldız    schedule 18.05.2016
comment
@KishoreSahas Я только что протестировал Firefox 49.0.1 и убедился, что он работает так же, как и в предыдущих версиях Firefox. - person Murat Yıldız; 26.10.2016
comment
@KishoreSahas Не могли бы вы опубликовать свой код, чтобы я мог проверить? - person Murat Yıldız; 26.10.2016
comment
@Murat Yıldız: Мне нужно реализовать то же самое, и я следил за вашим кодом. У меня он отлично работает во всех браузерах. Спасибо ! - person Sree; 29.12.2016
comment
@Sree Я рада, что вам это помогло :) - person Murat Yıldız; 29.12.2016
comment
Я только что протестировал это, и, к сожалению, это не сработало для Firefox (52.0). Это позволило мне сохранить пароль при первом входе в систему и снова войти в систему с сохраненной учетной записью во второй раз. После этого он предварительно заполнял его, когда я иногда переходил к полю пароля, но иногда нет (не уверен, что там). Я вижу пароль в области «Сохраненные логины ...», и вы можете указать пароль там. Похоже, это сработало для Chrome (56.0). - person mikato; 10.03.2017
comment
Только что протестировали Mozilla Firefox 52.0, Google Chrome 57.0, Microsoft Edge 38.1 и отлично работают! .. - person Murat Yıldız; 10.03.2017
comment
@mikato Может быть, вы применили что-то не так, повторите попытку и дайте мне знать, работает ли это ... - person Murat Yıldız; 13.03.2017
comment
@ MuratYıldız Как ни странно казалось, что мой собственный веб-браузер Firefox все еще может сохранять пароль, но другие люди, также использующие Firefox, сказали, что они больше не могут сохранять пароль. Но теперь, спустя несколько дней, я тоже не могу сохранить свой пароль. Так что, я думаю, это сработало, и почему-то у моего браузера была отложенная реакция. Это может заставить меня винить кеширование, но все же это кажется странным. - person mikato; 18.03.2017
comment
@mikato Я рад, что ваша проблема наконец-то решена и вы заставили ее работать должным образом :) - person Murat Yıldız; 18.03.2017
comment
В Safari Mobile может быть ошибка, поскольку этот ответ исправляет ее stackoverflow.com/questions/2530/ - person Ferie; 01.11.2017
comment
@Ferie Я рад, что это помогает решить проблему;) Спасибо за отзыв. - person Murat Yıldız; 01.11.2017
comment
Windows Firefox 57.0.2 (64-разрядная версия) по-прежнему предлагает сохранить пароль после того, как я это реализовал. - person Panu Haaramo; 19.12.2017
comment
@PanuHaaramo Не имеет значения, если браузер не может запомнить учетные данные пользователя для следующих входов в систему ... - person Murat Yıldız; 19.12.2017
comment
просто пробовал использовать этот метод, и он работает только в Chrome. не работает в Opera, Firefox или Internet Explorer - person chenks; 27.02.2019
comment
@chenks Я только что снова протестировал для вас следующие браузеры: Chrome версии 72.0.3626.109 (официальная сборка) (64-разрядная версия), Firefox Quantum 65.0.1 (64-разрядная версия) , Разработчик Firefox Эд. 66.0b7 (64-разрядная версия), Internet Explorer 11 и по-прежнему прекрасно работает! .. - person Murat Yıldız; 27.02.2019
comment
@ murat-yildiz ну я не знаю, что тебе сказать. Я тестировал его с текущими версиями перечисленных мной браузеров (в Windows 7), и он не работал в Opera, Firefox и IE11. единственный браузер, в котором он работал у меня, был Chrome. Может быть, вы могли бы предоставить полный html-код своей рабочей версии, чтобы я мог снова протестировать? - person chenks; 27.02.2019
comment
‹Тип ввода = имя пароля = автозаполнение пароля = выключено только для чтения onfocus = this.removeAttribute ('только для чтения'); style = background: #fff; курсор: текст; ›Решение отличное, в этом нет никаких сомнений. Но если мы его реализуем, пароль frield будет отключен, поэтому после этих изменений я думаю, что это решение не нуждается в дальнейших изменениях. Нам просто нужно добавить белый цвет фона и вид курсора. - person Asad Naeem; 21.10.2019
comment
@AsadNaeem Я могу зависеть от стилей, используемых на вашей странице. Потому что страница, на которой я использую этот код, не имеет отключенного вида или эффекта, и все работает как шарм в данных версиях браузера. - person Murat Yıldız; 21.10.2019
comment
@ MuratYıldız Я использую Chrome. Так что это может быть версия браузера. - person Asad Naeem; 23.10.2019
comment
в браузере firefox 84.0b8 (64-битная) версия не работает. - person Ajay Takur; 05.12.2020
comment
Не работает в Chrome 89. - person Rockallite; 17.03.2021

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

С этим требованием стандартный метод 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>
person Mike Stone    schedule 31.03.2010
comment
Похоже, это хорошее решение. Это имеет смысл, поскольку отправляемая вами форма сама по себе не содержит пароля. Я полагаю, что у вас может быть две формы, первая просто для того, чтобы имя пользователя и пароль были видны во всех браузерах. - person Alexis Wilke; 16.12.2012
comment
Мне нравится ваше решение, и я реализовал подобное на моем сайте, просто смешно, как сегодня браузеры не предлагают простой способ решить эту проблему. - person AgelessEssence; 27.03.2014
comment
Не уверен, что это из-за того, что я застрял в использовании jquery 1.6, но приведенный выше jquery работал только после обертывания внутри $ (document) .ready (function () {}); - person rgbflawed; 14.11.2014
comment
Единственное правильное утверждение - это так, поскольку некоторые браузеры больше не принимают autocomplete = off! - person Abadis; 19.01.2015
comment
Это нормально работало для меня в Chrome, но недавно снова запускается запрос на сохранение пароля. - person manoj; 20.01.2016
comment
Нарушение функции безопасности с помощью кода любительского уровня на самом деле является ужасным решением. - person Free Consulting; 22.03.2016
comment
Одна проблема с этим, которую я вижу, заключается в том, что скрытый пароль показывает текст текущего пароля в браузере. - person Tim; 16.12.2016
comment
Я только что попробовал этот метод в Chrome, Opera и Internet Explorer, и, похоже, он работает, но он не работает с Firefox, к сожалению, - person chenks; 27.02.2019

Что ж, это очень старый пост, но все же я дам свое решение, которого моя команда пыталась достичь долгое время. Мы просто добавили в форму новое поле input type = "password", обернули его в 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;}
person whyAto8    schedule 04.08.2014
comment
Одно из преимуществ этого способа по сравнению с теми, кто использует скрытые входы, заключается в том, что таким образом пароль никогда не сохраняется в поле открытого текста. - person pvgoddijn; 26.11.2014
comment
@ whyAto8 Это не сработало для меня в Chrome 47.0.2526.111 ... трюк, чтобы заставить его работать, состоял в том, чтобы добавить еще один текст поля в скрытый div. Браузер просит сохранить пароль, НО он говорит: «Вы уверены, что сохраните эти данные?» а затем отображается пустое имя пользователя и пустой пароль. Это сработало. - person David Bélanger; 20.01.2016
comment
Решение почемуAto8 вместе с комментарием @David Bélanger сработало для меня (ни одно из других решений не помогло). Я также должен упомянуть, что я добавил два пустых скрытых поля ПЕРЕД теми, которые фактически используются для ввода данных, а дублированные (скрытые) поля имели одинаковые имена. Таким образом, Chrome (48.0.2564.103) даже не спрашивал, нужно ли сохранять пароль. - person Vadim; 11.02.2016
comment
Никакая комбинация этого не работает в Chrome 48.0.2564.116. Даже в сочетании с комментарием Дэвида Беланжера всплывающее окно Chrome с просьбой сохранить пароль по-прежнему кэширует пароль, если вы нажмете ОК - person ChrisO; 05.03.2016
comment
Отличный ответ ... Скажите, пожалуйста, почему вы сказали Убедитесь, что этот div находится до фактического ввода пароля? Я поставил этот div после фактического ввода пароля, и он все равно работает ... Так почему вы упомянули об этом? - person Martin AJ; 06.07.2016
comment
Привет, извините, я не был уверен в цели, так как перешел в другой проект. Я думаю, что мы хотели, чтобы это было скрыто, но также применили все взаимодействия, которые пользователь делал с фактическим вводом, отображаемым в пользовательском интерфейсе. Итак, как только пользователь делает что-то при вводе, что является видимым, мы копируем взаимодействие на скрытое и передаем данные. - person whyAto8; 07.07.2016
comment
Работает с Google Chrome 53, iOS10 Safari и IE11. Это было серьезной головной болью, которую нужно было выследить. Определенное голосование за !! - person PoloHoleSet; 05.10.2016

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

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

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

person Joel Coehoorn    schedule 28.08.2008
comment
[@Joel] (# 32409), который может помешать автозаполнению формы, но помешает ли это браузеру затем запросить сохранение пароля для этой предполагаемой новой формы? - person Joseph Pecoraro; 28.08.2008
comment
Я не верю, что сейчас это сработает. В FF 13 у меня есть форма с несколькими полями пароля, все с разными именами. FF, как только он сохраняет пароль для этой страницы, вставляет сохраненный пароль во ВСЕ поля пароля. Ему все равно, каковы имена полей (например, у меня есть new_password и old_password, и сохраненный пароль сбрасывается в оба из них). В этой конкретной форме у меня нет имени пользователя для сохранения пароля - всего два поля пароля, на случай, если это имеет значение. - person Jason; 19.07.2012
comment
Кивает @Jason, каждый раз присваивая полю пароля новый UUID для имени, ничего не предпринимая, чтобы помешать попыткам браузера заполнить его. - person F. P. Freely; 20.06.2014

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

person David Schmitt    schedule 19.12.2008
comment
Кстати, это аутентификация, а не аутентификация - person Jonathan.; 27.12.2011
comment
@Jonathan Pity, я предпочитаю аутентификацию - person Ian Boyd; 22.06.2012
comment
Другим решением может быть реализация JavaScript, который принудительно закрывает браузер после выхода пользователя из приложения. Это полностью очистит память браузера, и, следовательно, данные не будут извлечены из памяти браузера. - person Ajay Takur; 30.07.2019

Самый простой способ - использовать атрибут тега 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, после соответствующего " имя пользователя "input.

person venimus    schedule 07.10.2013
comment
Какой смысл запрещать браузеру вводить пароль, но позволять ему хранить его? Это только обманывает пользователя, заставляя его думать, что его пароль не хранится, хотя на самом деле он уязвим. - person CodesInChaos; 31.07.2015
comment
Таким образом, он фактически не будет хранить ваш пароль, потому что вы вводите в другое поле, которое игнорируется FF. Вместо этого он сохранит пустую строку. - person venimus; 31.07.2015
comment
@CodesInChaos ИМХО, вам следует пересмотреть свой голос против, потому что ваше беспокойство недействительно - person venimus; 23.09.2015

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

  1. IE8, IE9, IE10, Firefox, Safari работают нормально.
    # P2 #
  2. Chrome и IE 11 не поддерживают функцию autocomplete = "off"
  3. FF поддерживает autocomplete = "off". но иногда заполняются существующие сохраненные учетные данные.

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

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

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

Также добавьте два метода. один для проверки "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();
 }
}

Удачи!!!

person Asik    schedule 29.05.2014
comment
Хотя этот ответ предоставляет полезную информацию, на самом деле он не отвечает на вопрос о том, как запретить браузерам сохранять пароли. - person JW Lim; 11.06.2014
comment
@JW Lim, я обновил ответ. Пожалуйста, изучите это. Спасибо! - person Asik; 11.06.2014
comment
@Sivakumar, Хорошо, пожалуйста, включите ОС и версию Safari. чтобы другие люди знали то же самое. он работал в моей системе (Windows 8, Safary 5) - person Asik; 04.02.2015
comment
@Asik Safari 8.0.3 и Mac OS 10.10 - person Sivakumar; 09.02.2015

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

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

person Jason Bunting    schedule 28.08.2008
comment
Вы должны помнить, что это правительственный сайт, и подобные вещи носят политический характер. Если кто-то наверху говорит, что так не должно работать, тогда то, что реально, не входит в уравнение. Проблема может быть перенесена в заметки Post-It, но политика в отношении них предназначена для другого отдела - проблема была перенесена ;-) И я на самом деле серьезно. - person Jason; 19.07.2012

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

Пример jQuery:

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

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

person Howard Young    schedule 01.03.2010

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

person Nikhil Dinesh    schedule 04.07.2014

Поскольку 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.

person mfernandes    schedule 04.04.2017
comment
Windows Firefox 57.0.2 (64-разрядная версия) по-прежнему предлагает сохранить пароль после того, как я это реализовал. - person Panu Haaramo; 19.12.2017

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

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

person Thrawn    schedule 07.02.2011
comment
но опытные пользователи могут обойти это - это применимо к большинству функций приложения, будь то веб или нет, и не должно быть причиной для ограничения системы. Люди также могут записывать свои пароли на стикерах и помещать их на свой монитор, вы можете сделать только так много для безопасности с точки зрения приложения, и обеспечение значимого поведения по умолчанию (без сохранения его локально) - это начало. - person Niels Keurentjes; 08.01.2014

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

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

person Dai Bok    schedule 25.07.2014
comment
действительно изящное решение есть шрифт пароля здесь - person andrew; 24.11.2014
comment
При использовании такого решения необходимо учитывать, что пользователи могут свободно копировать текст, введенный в это поле похожего пароля. Функции копирования и вырезания отключены в полях с настоящим паролем. - person ; 11.12.2014

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

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

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

person knee-cola    schedule 04.08.2015
comment
Windows Firefox 57.0.2 (64-разрядная версия) по-прежнему предлагает сохранить пароль после того, как я это реализовал. - person Panu Haaramo; 19.12.2017
comment
ну это просто хак, который может перестать работать в любой момент :) - person knee-cola; 20.12.2017
comment
это лучший вариант! просто очистите поле пароля перед отправкой: $ ('. password'). val ('') - person ebelendez; 07.05.2020

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

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

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

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

person ovalek    schedule 28.08.2015
comment
Это действительно работает. Это предотвращает сохранение пароля браузером. Чтобы не показывать пароль, вы можете заключить поле ввода в скрытый div. И вы уже можете это сделать, если DOM загружен, не нужно ждать, пока вы отправите форму. - person Ferry Kranenburg; 10.12.2015
comment
Работает на IE 11.0.9600.18161! - person Lu55; 08.02.2016
comment
Это правда. Теперь я попробовал это в FF 44.0.2, и этот хак больше не работает ... как жаль. В Chrome это все еще работает. - person ovalek; 02.03.2016
comment
Вы можете заменить input [type = submit] или button [type = submit] на обычную кнопку [type = button] и сделать это в обработчике onclick. Если в форме нет [type = submit], это также предотвратит отправку формы с помощью клавиши ввода и отображение запроса на сохранение пароля. - person Steven Don; 13.05.2016

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

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

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

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

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

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

person Joseph Pecoraro    schedule 28.08.2008
comment
У меня проблема с проверкой в ​​соответствии со стандартами w3c. Дело в том, что мне нужна эта функция для веб-сайта мобильного банкинга. Я предполагаю, что мобильные браузеры достаточно строги и иногда могут испортить форму, если используется какой-то недопустимый атрибут. Что посоветуете в этом случае? - person asgs; 08.03.2010
comment
Я думаю, что это старый стиль мышления. Многие современные мобильные браузеры построены на основе WebKit и либо поддерживают, либо игнорируют этот атрибут. Я не знаю, как другие страны или браузеры в старых сотовых телефонах справляются с этим, но изящная обработка атрибутов / элементов, которые неизвестны, имеет фундаментальное значение для хорошего браузера. Это доказывает, что браузер не ломается по мере развития Интернета. Он может отставать (не реализовывать новые функции), но не сломается. Надеюсь, что это поможет =) - person Joseph Pecoraro; 11.04.2010
comment
Это должен быть скорее комментарий к упомянутому ответу, чем ответ на сам вопрос. - person viam0Zah; 16.12.2010

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

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

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

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

person Lasitha Benaragama    schedule 21.03.2017
comment
это, очевидно, нарушает нажатие клавиши enter или return для отправки формы. - person 8eecf0d2; 04.03.2018

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

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

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

person Huppie    schedule 28.08.2008
comment
Хеширование на стороне клиента не заменяет хеширование на стороне сервера. Я не уверен, поможет ли это вообще (если будет сделано дополнительно). - person Brilliand; 24.05.2012
comment
Разрешение хеширования на стороне клиента опасно, потому что это означает, что злоумышленнику не нужно взламывать пароль из хэша, он может просто использовать хеш для входа в систему. Хеш становится эквивалентом пароля. - person rjmunro; 11.09.2012
comment
Я согласен с Brilliand в том, что хэш на клиенте полезен только в том случае, если у вас также есть хеш на сервере перед сохранением пароля в вашей базе данных. Однако наличие хеша на стороне клиента может помочь решить определенное количество проблем с мужчинами посередине. При этом, поскольку код будет доступен (по крайней мере, на общедоступных сайтах) для хакеров, он, вероятно, не так полезен, как может показаться. - person Alexis Wilke; 16.12.2012

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

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

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

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

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

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

person ruruskyi    schedule 26.06.2014

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

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

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

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

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

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

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

echo $_POST['password'][1];
person Mike    schedule 17.03.2016
comment
Этим вы скрываете проблему безопасности - хэш пароля все еще хранится в кеше браузера. - person Alexander Burakevych; 25.05.2016
comment
Не могли бы вы уточнить? Пароль будет отправлен в виде обычного текста с помощью POST. Насколько я прочитал, POST-запросы нельзя кэшировать. Вы говорите, что есть альтернатива использованию POST для отправки данных? Или вы говорите, что пароль хранится в браузере, потому что он хранит не пароль, а пустое значение в начале массива, вы тестировали этот метод? - person Mike; 26.05.2016

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

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

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

person CubicleSoft    schedule 05.03.2018

Это мой HTML-код для решения. Работает в Chrome-Safari-Internet Explorer. Я создал новый шрифт, в котором все символы выглядят как ●. Затем я использую этот шрифт для текста своего пароля. Примечание. Имя моего шрифта является секретным для пароля.

<style type="text/css">
         #login_parola {
             font-family: 'passwordsecretregular' !important;
            -webkit-text-security: disc !important;
            font-size: 22px !important;
         }
    </style>


<input type="text" class="w205 has-keyboard-alpha"  name="login_parola" id="login_parola" onkeyup="checkCapsWarning(event)"  
   onfocus="checkCapsWarning(event)" onblur="removeCapsWarning()" onpaste="return false;" maxlength="32"/>
person Community    schedule 17.11.2020

Есть ли способ запретить сайту запоминать пароли?

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

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

person Joseph Pecoraro    schedule 28.08.2008
comment
Насколько очевидно, что вы не рекомендуете изменять поле типа ввода? Было бы полезно проработать вопросы безопасности. - person Karl; 30.11.2008
comment
@karl: потому что необходимость вводить пароль на открытом воздухе позволяет серфить через плечо, процесс подбора пароля, глядя на экран во время его набора. - person David Schmitt; 22.01.2010
comment
Не только люди, занимающиеся серфингом через плечо, но и шпионские программы или вирусы могут смотреть на ваш экран и видеть, что было набрано в полях с открытым текстом. - person Karl; 22.01.2010
comment
@karl: Если на вашем компьютере установлено шпионское ПО / вирус, то никакая защита звездочкой вас не спасет. Установленному приложению не сложнее перехватить то, что вводится в поле «пароль», чем сделать то же самое для поля с открытым текстом. - person Markus Olsson; 22.01.2010
comment
Кроме того, если браузер видит обычный текстовый ввод вместо ввода пароля, он, вероятно, спрячет пароль в базе данных автозаполнения форм вместо базы данных паролей ... и затем предложит его или даже автоматически заполнит на каком-то несвязанном сайте! Так что на самом деле вам даже хуже, чем когда вы начали. - person zwol; 15.03.2011
comment
Так что, если вы должны сделать это с точки зрения веб-сайта, вам придется это изменить - но как ??? - person user5260143; 02.02.2016

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

<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>
person Tom    schedule 01.06.2012

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

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

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

person Naradana    schedule 08.08.2014

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

<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

person Sheiky    schedule 27.07.2015

На сегодняшний день наиболее многообещающим ответом, похоже, является @murat. Я сам тестировал его в Firefox, но, как другие предлагали в комментариях, он по-прежнему запрашивает пароль в первый раз. Тогда этого не произойдет, независимо от того, сколько раз вы повторно вводите пароль (в моем случае отправка с использованием Ajax). Если страница перезагружается, описанное выше поведение повторяется.

Я подумал, что у банковских сайтов должна быть такая функциональность, поэтому я проверил onlinesbi.com, и он отлично справляется.! Он не просит хранить пароль ни в одном браузере. Я попытался проверить источник, но не смог понять, он использует некоторую комбинацию скрытых элементов плюс автозаполнение и js. Я не мог понять этого, но на этой платформе их много, и я надеюсь, что кто-то определенно выяснит и разместит это здесь.

person Jay B    schedule 25.08.2020

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

person Peter Nelson    schedule 15.04.2011
comment
Это даже хуже, чем хранить их обычным способом, поскольку теперь пользователь не видит, что пароль был сохранен, и при этом не мешает злоумышленнику извлечь пароль из хранилища. - person CodesInChaos; 22.06.2015

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

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

person Spechal    schedule 24.04.2012

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

person Lord of the Goo    schedule 06.02.2013

Поскольку Internet Explorer 11 больше не поддерживает autocomplete="off" для input type="password" полей (будем надеяться, что никакие другие браузеры не последуют их примеру), самый чистый подход (на момент написания), похоже, заставляет пользователей отправлять свое имя пользователя и пароль на разных страницах, т. Е. Пользователь вводит свое имя пользователя, отправьте, затем введите свой пароль и отправьте. Bank Of America и HSBC Bank.

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

Обновление: как упоминалось в этом комментарии Грегори, Firefox будет следовать примеру IE11 и игнорировать autocomplete="off" поля пароля.

person JW Lim    schedule 06.03.2014
comment
Если вы не укажете имя пользователя, а в Borwser хранится несколько учетных записей, firefox отобразит запрос, предлагающий пользователю выбрать имя пользователя :( - person heymega; 19.09.2014
comment
Самый простой способ решить эту проблему - добавить поле поддельного пароля в самом начале формы без имени. как <input type="password" style="display:none;"/>, браузер заполняет только первое поле. наша форма будет работать как положено. - person Vignesh; 14.01.2015

я думаю, что установка autocomplete = "off" совсем не помогает

у меня есть альтернативное решение,

<input type="text" name="preventAutoPass" id="preventAutoPass" style="display:none" />

добавьте это перед вводом пароля.

eg:<input type="text" name="txtUserName" id="txtUserName" /> <input type="text" name="preventAutoPass" id="preventAutoPass" style="display:none" /> <input type="password" name="txtPass" id="txtPass" autocomplete="off" />

это не мешает браузеру запрашивать и сохранять пароль. но это не позволяет ввести пароль.

радость

person Biau    schedule 07.01.2014

ИМХО,
Лучше всего рандомизировать имя поля ввода, в котором есть type=password. Используйте префикс «pwd», а затем случайное число. Создайте поле динамически и представьте форму пользователю.

Ваша форма входа будет выглядеть так ...

<form>
   <input type=password id=pwd67584 ...>
   <input type=text id=username ...>
   <input type=submit>
</form>

Затем на стороне сервера, когда вы анализируете форму, отправленную клиентом, поймите поле с именем, которое начинается с «pwd», и используйте его как «пароль».

person Marcelo Finki    schedule 21.06.2012
comment
Обратите внимание, что это не помешает пользователю сохранить пароль, что является здесь основной проблемой. Если удастся избежать экономии, значит, все хорошо. Поскольку избегать предварительного заполнения само по себе бесполезно, пароль был где-то сохранен. Собственно, в вашем случае пользователь мог каждый раз сохранять его и засорять свой браузер своим сверхсекретным паролем ... - person Alexis Wilke; 16.12.2012
comment
Chrome делает агрессивные попытки запоминания и автоматического заполнения полей имени пользователя и пароля, даже если они были переименованы. Радость :) - person Már Örlygsson; 05.09.2014