Как запретить браузеру хранить пароль

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

Я пробовал autocomplete="off" атрибут в полях HTML-форма и пароль. Но он не работает в последних браузерах, таких как Chrome 55, Firefox 38+, IE 11...так далее.

что является лучшим решением для этого?

11 ответов


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

как пояснил MDN: Как отключить автозаполнение формы:

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

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

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

по этой причине многие современные браузеры не поддерживают autocomplete="off" для полей входа в систему:

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

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

это поведение в Firefox (начиная с версии 38), Google Chrome (начиная с 34) и Internet Explorer (начиная с версии 11).

если автор хотел бы предотвратить автозаполнение полей пароля на страницах управления пользователями, где пользователь может указать новый пароль для кого-то, кроме себя, autocomplete="new-password" должно быть указано, хотя поддержка этого еще не была реализована во всех браузерах.


Спасибо, что ответили мне. Я пошел по ссылке ниже

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

Я решил проблему, просто добавив readonly & onfocus="this.removeAttribute('readonly');" атрибуты, кроме autocomplete="off" к входам, как показано ниже.

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

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

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


вот чисто HTML / CSS решение Chrome проверен в версия 65.0.3325.162 (официальная сборка) (64-разрядная версия).

установить вход type="text" и использовать в CSS text-security:disc передразнить type="password".

<input type="text" name="username">
<input type="text" name="password" style="text-security:disc; -webkit-text-security:disc;">
  • Примечание: работает в в Firefox но в CSS moz-text-security is Устарел / Удален. Чтобы исправить это, создайте в CSS font-face только точки и использование font-family: 'dotsfont';.

    источник: получить тип ввода=текст, чтобы выглядеть как type=password

    источник выше содержит ссылку на обходной путь для в CSS moz-text-security и -webkit-text-security собственность.

    источник:https://github.com/kylewelsby/dotsfont

    насколько я протестировал это решение работает для Chrome, FireFox версии 59.0 (64-бит), версия IE 11.0.9600, а как IE эмуляторы ie5 и больше.


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

<form>
  <div style="display:none">
    <input type="password" tabindex="-1"/>
  </div>
  <input type="text" name="username" placeholder="username"/>
  <input type="password" name="password" placeholder="password"/>
</form>

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


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

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

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


попробовать это это может помочь вам, для получения дополнительной информации посетите тип ввода=пароль, не позволяйте браузеру запоминать пароль

function setAutoCompleteOFF(tm){
    if(typeof tm =="undefined"){tm=10;}
    try{
    var inputs=$(".auto-complete-off,input[autocomplete=off]"); 
    setTimeout(function(){
        inputs.each(function(){     
            var old_value=$(this).attr("value");            
            var thisobj=$(this);            
            setTimeout(function(){  
                thisobj.removeClass("auto-complete-off").addClass("auto-complete-off-processed");
                thisobj.val(old_value);
            },tm);
         });
     },tm); 
    }catch(e){}
  }
 $(function(){                                              
        setAutoCompleteOFF();
    })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="passfld" type="password" autocomplete="off" />
<input type="submit">

один из способов-генерировать случайные входные имена и работать с ними.

таким образом, браузеры будут представлены new форма каждый раз и не сможете предварительно заполнить поля ввода. Если вы предоставите нам пример кода (у вас есть приложение JS spa или рендеринг на стороне сервера), я буду рад помочь вам в реализации.

С уважением,


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

что-то еще вы можете сделать, это заставить входы быть пустыми после загрузки страницы (и после того, как браузер автоматически завершил поля). Поместите этот скрипт в конец <body> элемент.

userIdInputElement.value = "";
userPasswordInputElement.value = "";

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

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

в jQuery плагин:

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

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

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

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

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

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

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

демо:

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

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


вы можете сделать это в google chrome, перейдя к настройке / Password and Forms > Disable [включить автозаполнение для заполнения веб-форм одним щелчком мыши.] и отключить [предложение сохранить пароли с помощью Google Smart Lock для паролей.]