Как отключить автозаполнение браузера в поле веб-формы / теге ввода?
1063326 просмотра
30 ответа
Как отключить autocomplete
в основных браузерах для конкретного input
(или form field
)?
Ответы (30)
2487 плюса
Firefox 30 игнорирует autocomplete="off"
пароли, предпочитая вместо этого запрашивать у пользователя, должен ли пароль храниться на клиенте. Обратите внимание на следующий комментарий от 5 мая 2014 года:
- Менеджер паролей всегда запрашивает, хочет ли он сохранить пароль. Пароли не сохраняются без разрешения пользователя.
- Мы третий браузер, который внедрил это изменение после IE и Chrome.
Согласно документации Mozilla Developer Network , логический атрибут элемента autocomplete
формы предотвращает кэширование данных формы в старых браузерах.
<input type="text" name="foo" autocomplete="off" />
Автор: nlucaroni
Размещён: 05.08.2008 04:24
292 плюса
В дополнение к этому autocomplete=off
, вы также можете сделать так, чтобы имена полей формы были рандомизированы кодом, который генерирует страницу, возможно, путем добавления некоторой специфичной для сеанса строки в конец имен.
Когда форма отправлена, вы можете удалить эту часть перед обработкой на стороне сервера. Это помешает веб-браузеру найти контекст для вашего поля, а также может помочь предотвратить атаки XSRF, поскольку злоумышленник не сможет угадать имена полей для отправки формы.
Автор: Ben Combee Размещён: 20.10.2008 01:36218 плюса
Большинство основных браузеров и менеджеров паролей (правильно, ИМХО) сейчас игнорируют autocomplete=off
.
Зачем? Многие банки и другие веб-сайты с высоким уровнем безопасности добавляются autocomplete=off
на свои страницы входа «в целях безопасности», но это на самом деле снижает безопасность, так как люди автоматически меняют пароли на этих сайтах с высоким уровнем безопасности, чтобы их было легко запомнить (и, таким образом, взломать) после автозаполнения. был сломан.
Давным-давно большинство менеджеров паролей начали игнорировать autocomplete=off
, и теперь браузеры начинают делать то же самое только для ввода имени пользователя / пароля.
К сожалению, ошибки в реализациях автозаполнения вставляют имя пользователя и / или пароль в несоответствующие поля формы, вызывая ошибки проверки формы или, что еще хуже, случайно вставляя имена пользователей в поля, которые пользователь намеренно оставил пустыми.
Что делать веб-разработчику?
- Если вы можете сохранить все поля пароля на странице сами по себе, это отличное начало, так как кажется, что наличие поля пароля является основным триггером для срабатывания автозаполнения пользователя / пароля. В противном случае, прочитайте советы ниже.
- Safari замечает, что есть 2 поля пароля, и в этом случае отключает автозаполнение, предполагая, что это должна быть форма смены пароля, а не форма входа. Поэтому обязательно используйте 2 поля пароля (новый и подтвердите новый) для любых форм, в которых вы разрешаете
К сожалению, Chrome 34 будет пытаться автоматически заполнять поля с помощью user / pass всякий раз, когда видит поле пароля. Это довольно серьезная ошибка, которая, надеюсь, изменит поведение Safari. Однако добавление этого в верхнюю часть формы отключает автозаполнение пароля:
<input type="text" style="display:none"> <input type="password" style="display:none">
Я еще не исследовал IE или Firefox полностью, но буду рад обновить ответ, если у других есть информация в комментариях.
Автор: apinstein Размещён: 23.04.2014 04:00141 плюса
Иногда даже автозаполнение = выкло бы не допустить , чтобы заполнить учетные данные в неправильные поля, но не пользователь или ник поля.
Этот обходной путь дополняет пост apinstein о поведении браузера.
Исправить автозаполнение браузера только для чтения и установить запись на фокус (нажмите и вкладка)
<input type="password" readonly
onfocus="this.removeAttribute('readonly');"/>
Обновление: Mobile Safari устанавливает курсор в поле, но не отображает виртуальную клавиатуру. Новое исправление работает, как и раньше, но обрабатывает виртуальную клавиатуру:
<input id="email" readonly type="email" onfocus="if (this.hasAttribute('readonly')) {
this.removeAttribute('readonly');
// fix for mobile safari to show virtual keyboard
this.blur(); this.focus(); }" />
Демонстрационная версия https://jsfiddle.net/danielsuess/n0scguv6/
// UpdateEnd
Потому что браузер автоматически вводит учетные данные в неправильное текстовое поле !?
Я замечаю это странное поведение в Chrome и Safari, когда поля пароля имеют одинаковую форму. Я полагаю, браузер ищет поле пароля для вставки сохраненных учетных данных. Затем он автоматически заполняет (просто догадываясь из-за наблюдения) ближайшее поле ввода текста, которое появляется перед полем пароля в DOM. Поскольку браузер является последним экземпляром, и вы не можете его контролировать,
Это исправление только для чтения сработало для меня.
Автор: dsuess Размещён: 16.06.2014 04:0498 плюса
<form name="form1" id="form1" method="post"
autocomplete="off" action="http://www.example.com/form.cgi">
Это будет работать в Internet Explorer и Mozilla FireFox, недостатком является то, что это не стандарт XHTML.
Автор: brendan Размещён: 05.08.2008 04:2783 плюса
Решением для Chrome является добавление autocomplete="new-password"
к типу ввода пароля.
Пример:
<form name="myForm"" method="post">
<input name="user" type="text" />
<input name="pass" type="password" autocomplete="new-password" />
<input type="submit">
</form>
Chrome всегда автоматически заполняет данные, если находит поле с паролем , достаточное для указания этого поля autocomplete = "new-password"
.
Это хорошо работает для меня.
Примечание: убедитесь, что с F12 ваши изменения вступили в силу, во многих случаях браузеры сохраняют страницу в кеше, у меня сложилось плохое впечатление, что она не работает, но браузер фактически не вносил изменения.
Автор: Geynen Размещён: 24.11.2016 05:0758 плюса
Как уже говорили другие, ответ autocomplete="off"
Тем не менее, я думаю, что стоит указать, почему в некоторых случаях рекомендуется использовать это, поскольку некоторые ответы на эти и повторяющиеся вопросы наводят на мысль, что лучше не выключать его.
Остановка браузеров, хранящих номера кредитных карт, не должна предоставляться пользователям. Слишком много пользователей даже не осознают, что это проблема.
Особенно важно отключить его в полях для кодов безопасности кредитных карт. Как говорится на этой странице :
«Никогда не сохраняйте защитный код ... его значение зависит от предположения, что единственный способ предоставить его - это прочитать его с физической кредитной карты, доказав, что лицо, его предоставляющее, действительно держит карту».
Проблема в том, что если это общедоступный компьютер (интернет-кафе, библиотека и т. Д.), То другие пользователи смогут легко украсть данные вашей карты, и даже на вашем компьютере вредоносный веб-сайт может украсть данные автозаполнения .
Автор: Sam Hasler Размещён: 23.01.2009 09:2132 плюса
Мне пришлось бы просить не согласиться с теми ответами, которые говорят, чтобы избежать отключения автозаполнения.
Первое, что нужно упомянуть, это то, что автозаполнение, не отключаемое явно в полях формы входа, является ошибкой PCI-DSS. Кроме того, если локальный компьютер пользователя скомпрометирован, то злоумышленник может легко получить любые данные автозаполнения, поскольку они хранятся в открытом виде.
Есть, конечно, аргумент в пользу юзабилити, однако существует очень хороший баланс, когда дело доходит до того, какие поля формы должны иметь отключенное автозаполнение, а какие нет.
Автор: Securatek Размещён: 17.09.2011 12:3329 плюса
Три варианта: Первый:
<input type='text' autocomplete='off' />
Во-вторых:
<form action='' autocomplete='off'>
В-третьих (код JavaScript):
$('input').attr('autocomplete', 'off');
Автор: yajay
Размещён: 19.03.2013 10:05
27 плюса
Я решил бесконечный бой с Google Chrome с использованием случайных символов. Когда вы всегда визуализируете автозаполнение со случайной строкой, оно никогда ничего не запомнит.
<input name="name" type="text" autocomplete="rutjfkde">
Надеюсь, что это поможет другим людям.
Автор: step Размещён: 04.08.2018 02:2221 плюса
На связанной или на самом деле, на совершенно противоположной ноте -
Автор: Antti Kissaniemi Размещён: 08.09.2008 07:29«Если вы являетесь пользователем вышеупомянутой формы и хотите снова включить функцию автозаполнения, используйте букмарклет« запомнить пароль »со страницы этой закладки . Он удаляет все
autocomplete="off"
атрибуты из всех форм на странице. Продолжайте бороться! "
20 плюса
Мы действительно использовали идею sasb для одного сайта. Это было медицинское веб-приложение для управления кабинетом врача. Однако многие из наших клиентов были хирургами, которые использовали множество различных рабочих станций, в том числе полуобщественные терминалы. Поэтому они хотели убедиться, что врач, который не понимает смысла автоматически сохраняемых паролей или не обращает внимания, не может случайно оставить свои данные для входа легкодоступными. Конечно, это было до того, как идея частного просмотра стала появляться в IE8, FF3.1 и т. Д. Несмотря на это, многие врачи вынуждены использовать браузеры старой школы в больницах с ИТ, которые не изменятся.
Итак, у нас была страница входа, генерирующая случайные имена полей, которые работали бы только для этого поста. Да, это менее удобно, но это просто ударяет пользователя по поводу того, что он не хранит информацию для входа на общедоступных терминалах.
Автор: Jon Adams Размещён: 16.09.2008 03:3519 плюса
Просто установите autocomplete="off"
. Для этого есть очень веская причина: вы хотите предоставить собственную функцию автозаполнения!
19 плюса
Я пытался бесконечные решения, а потом я нашел это:
Вместо того, чтобы autocomplete="off"
просто использоватьautocomplete="false"
Это так просто, и это работает как шарм в Google Chrome!
Автор: Kaszoni Ferencz Размещён: 01.05.2015 05:5618 плюса
Я думаю, что autocomplete=off
поддерживается в HTML 5.
Спросите себя, почему вы хотите сделать это, хотя - это может иметь смысл в некоторых ситуациях, но не делайте это просто ради этого.
Это менее удобно для пользователей и даже не является проблемой безопасности в OS X (упомянутой Сореном ниже). Если вы беспокоитесь о том, что пароли пользователей могут быть украдены удаленно, регистратор нажатий клавиш может сделать это даже при использовании вашего приложения autcomplete=off
.
Как пользователь, который выбирает браузер, запоминающий (большую часть) мою информацию, я нахожу это раздражающим, если ваш сайт не запомнил мою.
Автор: user631300 Размещён: 23.02.2011 11:2418 плюса
Ни одно из решений не помогло мне в этом разговоре.
Я наконец-то понял, что решение на чистом HTML не требует Javascript , работает в современных браузерах (кроме IE; нужно было хотя бы 1 перехват, верно?) И не требует отключения автозаполнения для всей формы.
Просто отключите автозаполнение на form
и затем включите его для любого, который input
вы хотите, чтобы он работал в форме. Например:
<form autocomplete="off">
<!-- these inputs will not allow autocomplete and chrome
won't highlight them yellow! -->
<input name="username" />
<input name="password" type="password" />
<!-- this field will allow autocomplete to work even
though we've disabled it on the form -->
<input name="another_field" autocomplete="on" />
</form>
Автор: lifo
Размещён: 15.08.2013 07:02
17 плюса
Это был нестандартный способ сделать это (я думаю, что Mozilla и Internet Explorer все еще поддерживают это), но расстраиваться с ожиданиями пользователей - плохая идея.
Если пользователь вводит данные своей кредитной карты в форму, а затем позволяет другому пользователю использовать этот браузер, это не ваша задача. :)
Автор: sparkes Размещён: 05.08.2008 04:2616 плюса
Это работает для меня.
<input name="pass" type="password" autocomplete="new-password" />
Мы также можем использовать эту стратегию в других элементах управления, таких как текст, выделение и т. Д.
Автор: Muhammad Awais Размещён: 30.12.2016 03:0513 плюса
Немного опоздал к игре ... но я только столкнулся с этой проблемой и попробовал несколько сбоев, но этот работает для меня, найденный на MDN
В некоторых случаях браузер будет продолжать предлагать значения автозаполнения, даже если атрибут автозаполнения отключен. Такое неожиданное поведение может быть довольно загадочным для разработчиков. Хитрость для принудительного принудительного завершения - присвоить атрибуту случайную строку следующим образом:
autocomplete="nope"
Автор: AAH-Shoot
Размещён: 22.03.2016 07:38
13 плюса
Лучшее решение:
Запретить автозаполнение имени пользователя (или электронной почты) и пароля:
<input type="email" name="email"><!-- Can be type="text" -->
<input type="password" name="password" autocomplete="new-password">
Запретить автозаполнение поля:
<input type="text" name="field" autocomplete="nope">
Пояснение:
autocomplete
продолжает работать <input>
, autocomplete="off"
не работает, но вы можете изменить off
на случайную строку, например nope
.
Работает в:
Хром: 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 и 64
Firefox: 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 и 58
13 плюса
Попробуй добавить
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');" >
Обновление: ниже приведен полный пример, основанный на этом подходе, который предотвращает перетаскивание , копирование , вставку и т. Д.
<input type="text" name="UserName" style="text-transform:lowercase;" placeholder="Username"
autocomplete="off" readonly onfocus="this.removeAttribute('readonly');"
oncopy="return false" ondrag="return false" ondrop="return false"
onpaste="return false" oncontextmenu="return false" >
<input type="password" name="Password" placeholder="Password" autocomplete="off" readonly
onfocus="this.removeAttribute('readonly');" oncopy="return false" ondrag="return false"
ondrop="return false" onpaste="return false" oncontextmenu="return false" >
Испытано на последние версии основных браузеров , то есть Google Chrome
, Mozilla Firefox
, Microsoft Edge
и т.д. , и работать без каких - либо проблем. Надеюсь это поможет...
12 плюса
Добавление
autocomplete="off"
к тегу формы отключит автозаполнение браузера (что ранее было введено в это поле) из всех input
полей в этой конкретной форме.
Проверено на:
- Firefox 3.5, 4 бета
- Internet Explorer 8
- Хром
11 плюса
Используйте нестандартное имя и идентификатор для полей, чтобы вместо «name» было «name_». Браузеры не увидят его как поле имени. Самое приятное в этом то, что вы можете сделать это с некоторыми, но не со всеми полями, и он автоматически заполнит некоторые, но не все поля.
Автор: Teifion Размещён: 05.08.2008 04:2711 плюса
Чтобы избежать недопустимого XHTML, вы можете установить этот атрибут, используя javascript. Пример использования jQuery:
<input type="text" class="noAutoComplete" ... />
$(function() {
$('.noAutoComplete').attr('autocomplete', 'off');
});
Проблема в том, что пользователи без javascript получат функцию автозаполнения.
Автор: cherouvim Размещён: 12.12.2010 06:3411 плюса
Добавление autocomplete="off"
не собирается сокращать это.
Измените атрибут типа ввода на type="search"
.
Google не применяет автозаполнение для входов с типом поиска.
10 плюса
попробуйте это тоже, если просто autocomplete="off"
не работает:
autocorrect="off" autocapitalize="off" autocomplete="off"
Автор: jeff
Размещён: 04.12.2012 06:24
10 плюса
Я не могу поверить, что это все еще проблема так долго после того, как об этом сообщили. Вышеуказанные решения не сработали для меня, так как сафари, казалось, знал, когда элемент не отображался или находился вне экрана, однако мне помогло следующее:
<div style="height:0px; overflow:hidden; ">
Username <input type="text" name="fake_safari_username" >
Password <input type="password" name="fake_safari_password">
</div>
Надеюсь, это кому-нибудь пригодится!
Автор: Ben Размещён: 23.04.2016 11:0210 плюса
Это проблема безопасности, которую браузеры игнорируют сейчас. Браузеры идентифицируют и сохраняют контент, используя входные имена, даже если разработчики считают, что информация является конфиденциальной и не должна храниться. Изменение имени ввода между двумя запросами решит проблему (но все равно будет сохранено в кеше браузера, а также увеличит кэш браузера). Попросить пользователя активировать или деактивировать параметры в настройках своего браузера не является хорошим решением. Проблема может быть исправлена в бэкэнде.
Вот мое исправление. Подход, который я реализовал в моей структуре. Все элементы автозаполнения генерируются со скрытым вводом, подобным этому:
<? $r = rmd5(rand().mocrotime(TRUE)); ?>
<form method="POST" action="./">
<input type="text" name="<? echo $r; ?>" />
<input type="hidden" name="__autocomplete_fix_<? echo $r; ?>" value="username" />
<input type="submit" name="submit" value="submit" />
</form>
Затем сервер обрабатывает переменные записи следующим образом:
foreach ($_POST as $key => $val)
{
if(preg_match('#^__autocomplete_fix_#', $key) === 1){
$n = substr($key, 19);
if(isset($_POST[$n]))$_POST[$val] = $_POST[$n];
}
}
Значение можно получить как обычно
var_dump($_POST['username']);
И браузер не сможет предложить информацию из предыдущего запроса или от предыдущих пользователей.
Все работает как шарм, даже если браузер обновляет, хочет игнорировать автозаполнение или нет. Это был лучший способ исправить проблему для меня.
Автор: Simmoniz Размещён: 02.06.2015 08:379 плюса
Ни один из упомянутых здесь хаков не работал для меня в Chrome. Здесь обсуждается вопрос: https://code.google.com/p/chromium/issues/detail?id=468153#c41.
Добавление этого внутри <form>
работ (по крайней мере, пока):
<div style="display: none;">
<input type="text" id="PreventChromeAutocomplete" name="PreventChromeAutocomplete" autocomplete="address-level4" />
</div>
Автор: Jakob Løkke Madsen
Размещён: 02.07.2015 10:40
9 плюса
Итак, вот оно:
function turnOnPasswordStyle() {
$('#inputpassword').attr('type', "password");
}
<input oninput="turnOnPasswordStyle()" id="inputpassword" type="text">
Вопросы из категории :
- html Определить часовой пояс пользователя
- html Как определить, какой из указанных шрифтов был использован на веб-странице?
- html Как мне дать моим веб-сайтам значок для iPhone?
- html Как отключить автозаполнение браузера в поле веб-формы / теге ввода?
- html Как автоматически изменить размер текстовой области с помощью Prototype?
- html Как вы можете настроить номера в упорядоченном списке?
- browser Получение текста из выпадающего списка
- browser Отключить функцию браузера «Сохранить пароль»
- browser Сделать окно браузера мигающим в панели задач
- browser Есть ли способ встроить браузер в Java?
- autocomplete Как сделать автозаполнение запроса / предложения в Lucene?
- autocomplete Как сделать Python, программа командной строки автозаполнения произвольных вещей, НЕ интерпретатор
- autocomplete Блокнот ++ и завершение кода
- autocomplete Как создать автозаполнение, чтобы получить ключевые слова так быстро, как поиск Google или живой поиск