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

security browser autocomplete passwords

250536 просмотра

30 ответа

3165 Репутация автора

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

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

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

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

Автор: mattsmith321 Источник Размещён: 28.08.2008 02:18

Ответы (30)


7 плюса

50572 Репутация автора

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

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

Автор: Jason Bunting Размещён: 28.08.2008 02:21

321 плюса

20288 Репутация автора

Решение

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

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

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

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

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

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

Пример с jQuery:

$('#loginForm').attr('autocomplete', 'off');
Автор: Markus Olsson Размещён: 28.08.2008 02:23

-1 плюса

2552 Репутация автора

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

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

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

Автор: Joseph Pecoraro Размещён: 28.08.2008 02:23

0 плюса

9498 Репутация автора

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

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

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

Автор: Huppie Размещён: 28.08.2008 02:23

1 плюс

2552 Репутация автора

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

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

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

Автор: Joseph Pecoraro Размещён: 28.08.2008 02:29

16 плюса

321621 Репутация автора

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

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

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

Автор: Joel Coehoorn Размещён: 28.08.2008 02:29

14 плюса

45185 Репутация автора

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

Автор: David Schmitt Размещён: 19.12.2008 10:53

6 плюса

77 Репутация автора

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

Пример jQuery:

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

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

Автор: Howard Young Размещён: 01.03.2010 10:13

37 плюса

33754 Репутация автора

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

С этим требованием стандартный 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>
Автор: Mike Stone Размещён: 31.03.2010 07:10

2 плюса

29 Репутация автора

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

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

Автор: Thrawn Размещён: 07.02.2011 02:29

-2 плюса

13 Репутация автора

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

Автор: Peter Nelson Размещён: 15.04.2011 12:41

-2 плюса

1491 Репутация автора

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

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

Автор: Spechal Размещён: 24.04.2012 08:30

-1 плюса

9 Репутация автора

Если вы не хотите доверять флагу автозаполнения, вы можете убедиться, что пользователь вводит текст в поле, используя событие onchange. Код ниже представляет собой простую форму HTML. Скрытый элемент формы password_edited начинается с 0. Когда значение пароля изменяется, JavaScript в верхней части (функция pw_edited) меняет значение на 1. Когда кнопка нажата, она проверяет код valueenter здесь перед отправкой формы , Таким образом, даже если браузер игнорирует вас и автоматически заполняет поле, пользователь не может пройти страницу входа в систему, не введя в поле пароля. Кроме того, не забудьте очистить поле пароля, когда фокус установлен. В противном случае вы можете добавить символ в конце, затем вернуться и удалить его, чтобы обмануть систему. Я рекомендую дополнительно добавить 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>
Автор: Tom Размещён: 01.06.2012 03:56

-2 плюса

625 Репутация автора

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

Автор: Lord of the Goo Размещён: 06.02.2013 04:03

13 плюса

5107 Репутация автора

Самый чистый способ - использовать autocomplete="off"атрибут tag, но 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 после соответствующего «имени пользователя» вход.

Автор: venimus Размещён: 07.10.2013 11:03

12 плюса

6447 Репутация автора

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

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

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

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

Обновлено 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();
 }
}

Удачи!!!

Автор: Asik Размещён: 29.05.2014 07:11

0 плюса

1293 Репутация автора

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

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

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

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

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

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

Автор: ruruskyi Размещён: 26.06.2014 10:40

3 плюса

2695 Репутация автора

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

Автор: Nikhil Dinesh Размещён: 04.07.2014 08:59

2 плюса

2560 Репутация автора

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

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

Автор: Dai Bok Размещён: 25.07.2014 11:49

28 плюса

941 Репутация автора

Ну, это очень старый пост, но все же я дам свое решение, которого моя команда пыталась достичь долгое время. Мы просто добавили новое поле ввода type = "password" внутри формы, обернули его в 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;}
Автор: whyAto8 Размещён: 04.08.2014 04:28

-1 плюса

510 Репутация автора

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

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

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

Автор: Andreas Stankewitz Размещён: 08.08.2014 08:03

-1 плюса

21 Репутация автора

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

<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

Автор: Sheiky Размещён: 27.07.2015 01:58

1 плюс

501 Репутация автора

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

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

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

Автор: knee-cola Размещён: 04.08.2015 03:54

2 плюса

97 Репутация автора

Мой обходной путь 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-разрядная версия).

Автор: ovalek Размещён: 28.08.2015 11:49

0 плюса

172 Репутация автора

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

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

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

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

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

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

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

echo $_POST['password'][1];
Автор: Mike Размещён: 17.03.2016 11:42

33 плюса

7618 Репутация автора

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

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и т.д. , и работает как шарм. Надеюсь это поможет...

Автор: Murat Yıldız Размещён: 18.05.2016 07:03

1 плюс

1810 Репутация автора

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

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

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

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

Автор: Lasitha Benaragama Размещён: 21.03.2017 02:15

3 плюса

170 Репутация автора

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

Автор: mfernandes Размещён: 04.04.2017 11:46

2 плюса

3622 Репутация автора

Я проверил много решений. Динамическое имя поля пароля, несколько полей пароля (невидимых для поддельных), изменение типа ввода с «текст» на «пароль», 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">
Автор: Cedric Simon Размещён: 11.04.2017 06:39

0 плюса

1104 Репутация автора

Так как большинство из 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

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

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

Автор: CubicleSoft Размещён: 05.03.2018 03:35
Вопросы из категории :
32x32