Как запретить браузеру хранить пароль
Мне нужно остановить браузеры от хранения значений имени пользователя и пароля, потому что я работаю над веб-приложением, которое содержит более безопасные данные. Мой клиент попросил меня сделать это.
Я пробовал 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 Устарел / Удален. Чтобы исправить это, создайте в CSSfont-face
только точки и использованиеfont-family: 'dotsfont';
.источник: получить тип ввода=текст, чтобы выглядеть как type=password
источник выше содержит ссылку на обходной путь для в CSS
moz-text-security
и-webkit-text-security
собственность.насколько я протестировал это решение работает для 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 плагин:
соответствующий исходный код из приведенной выше ссылки:
(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 для паролей.]