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

someMethod.func_code.co_argcount

или, если текущее имя функции не определено:

import sys

sys._getframe().func_code.co_argcount
412
задан ulidtko 10 October 2013 в 15:03
поделиться

11 ответов

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

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

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

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

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

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

Пример с jQuery:

$('#loginForm').attr('autocomplete', 'off');
320
ответ дан Community 10 October 2013 в 15:03
поделиться

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

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

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

autocomplete = "off"

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

33
ответ дан Murat Yıldız 10 October 2013 в 15:03
поделиться

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

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

    Браузер не запрашивает «сохранить пароль». Кроме того, ранее сохраненное имя пользователя & amp; пароль не заполнен.

  2. Chrome & amp; 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();
 }
}

Удачи !!!

12
ответ дан Alastair Maw 10 October 2013 в 15:03
поделиться

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

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

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

-1
ответ дан Joseph Pecoraro 10 October 2013 в 15:03
поделиться

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

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

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

16
ответ дан Joel Coehoorn 10 October 2013 в 15:03
поделиться

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

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

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

0
ответ дан Huppie 10 October 2013 в 15:03
поделиться

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

14
ответ дан David Schmitt 10 October 2013 в 15:03
поделиться

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

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

7
ответ дан Jason Bunting 10 October 2013 в 15:03
поделиться

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

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

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

1
ответ дан Joseph Pecoraro 10 October 2013 в 15:03
поделиться

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

Пример jQuery:

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

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

6
ответ дан 22 November 2019 в 23:26
поделиться

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

С этим требованием стандартный метод 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>
37
ответ дан 22 November 2019 в 23:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: