Как отключить autocomplete
в основных браузерах для конкретного input
(или form field
)?
html
forms
browser
autocomplete
Бретт Веенстра
источник
источник
Ответы:
Firefox 30 игнорирует
autocomplete="off"
пароли, предпочитая вместо этого запрашивать у пользователя, должен ли пароль храниться на клиенте. Обратите внимание на следующий комментарий от 5 мая 2014 года:Согласно документации Mozilla Developer Network , логический атрибут элемента
autocomplete
формы предотвращает кэширование данных формы в старых браузерах.источник
В дополнение к этому
autocomplete=off
, вы также можете сделать так, чтобы имена полей формы были рандомизированы с помощью кода, который генерирует страницу, возможно, путем добавления некоторой специфичной для сеанса строки в конец имен.Когда форма отправлена, вы можете удалить эту часть перед обработкой на стороне сервера. Это помешает веб-браузеру найти контекст для вашего поля, а также поможет предотвратить атаки XSRF, поскольку злоумышленник не сможет угадать имена полей для отправки формы.
источник
$_SESSION['codefield_name'] = md5(uniqid('auth', true));
Большинство основных браузеров и менеджеров паролей (правильно, ИМХО) сейчас игнорируют
autocomplete=off
.Почему? Многие банки и другие веб-сайты с высоким уровнем безопасности добавляются
autocomplete=off
на свои страницы входа «в целях безопасности», но это на самом деле снижает безопасность, так как люди автоматически меняют пароли на этих сайтах с высоким уровнем безопасности, чтобы их было легко запомнить (и, таким образом, взломать) после автозаполнения. был разбит.Давным-давно большинство менеджеров паролей начали игнорировать
autocomplete=off
, и теперь браузеры начинают делать то же самое только для ввода имени пользователя / пароля.К сожалению, ошибки в реализациях автозаполнения вставляют информацию об имени пользователя и / или пароле в неподходящие поля формы, вызывая ошибки проверки формы или, что еще хуже, случайно вставляя имена пользователей в поля, которые пользователь намеренно оставил пустыми.
Что делать веб-разработчику?
К сожалению, Chrome 34 будет пытаться автоматически заполнять поля с помощью user / pass всякий раз, когда видит поле пароля. Это довольно плохая ошибка, которая, надеюсь, изменит поведение Safari. Однако добавление этого в верхнюю часть формы отключает автозаполнение пароля:
Я еще не исследовал IE или Firefox полностью, но буду рад обновить ответ, если у других есть информация в комментариях.
источник
type='password'
полей на одной странице приводило к тому, что в браузере игнорировалось автозаполнение «сохранить пароль», что имело смысл, поскольку регистрационные формы, как правило, запрашивают пароль дважды, когда формы входа запрашивают его только один раз.Иногда даже автозаполнения = выкл бы не допустить , чтобы заполнить учетные данные в неправильных полях, но не является пользователем или поле ник.
Этот обходной путь является дополнением к сообщению apinstein о поведении браузера.
Исправить автозаполнение браузера только для чтения и установить запись на фокус (нажмите и вкладка)
Обновление: Mobile Safari устанавливает курсор в поле, но не отображает виртуальную клавиатуру. Новое исправление работает, как и раньше, но обрабатывает виртуальную клавиатуру:
Демонстрационная версия https://jsfiddle.net/danielsuess/n0scguv6/
// UpdateEnd
Потому что браузер автоматически вводит учетные данные в неправильное текстовое поле !?
Я замечаю это странное поведение в Chrome и Safari, когда поля пароля имеют одинаковую форму. Я полагаю, браузер ищет поле пароля для вставки сохраненных учетных данных. Затем он автоматически заполняет (просто догадываясь из-за наблюдения) ближайшее поле ввода текста, которое появляется перед полем пароля в DOM. Поскольку браузер является последним экземпляром, и вы не можете его контролировать,
Это исправление только для чтения сработало для меня.
источник
readonly
удаляется, последующий выбор поля приводит к возврату автозаполнения.Это будет работать в Internet Explorer и Mozilla FireFox, недостатком является то, что это не стандарт XHTML.
источник
input type="password"
. Надеюсь, другие браузеры не захотят удалять эту функцию.autocomplete="off"
наform
это единственное, что работало для Chrome.Решением для Chrome является добавление
autocomplete="new-password"
к типу ввода пароля. Пожалуйста, проверьте пример ниже.Пример:
Chrome всегда автоматически заполняет данные, если находит поле с паролем , достаточное для указания этого поля
autocomplete = "new-password"
.Примечание: убедитесь,
F12
что ваши изменения вступили в силу, во многих случаях браузеры сохраняют страницу в кеше, у меня сложилось плохое впечатление, что она не работает, но браузер фактически не вносил изменения.источник
Как уже говорили другие, ответ
autocomplete="off"
Тем не менее, я думаю, что стоит указать, почему в некоторых случаях рекомендуется использовать это, поскольку некоторые ответы на эти и повторяющиеся вопросы наводят на мысль, что лучше не выключать его.
Остановка браузеров, хранящих номера кредитных карт, не должна предоставляться пользователям. Слишком много пользователей даже не осознают, что это проблема.
Особенно важно отключить его в полях для кодов безопасности кредитных карт. Как говорится на этой странице :
Проблема в том, что если это общедоступный компьютер (интернет-кафе, библиотека и т. Д.), То другие пользователи смогут легко украсть данные вашей карты, и даже на вашем компьютере вредоносный веб-сайт может украсть данные автозаполнения .
источник
Я решил бесконечный бой с Google Chrome с использованием случайных символов. Когда вы всегда визуализируете автозаполнение со случайной строкой, оно никогда ничего не запомнит.
Надеюсь, что это поможет другим людям.
источник
autocompleteoff
класс в желаемое поле ввода.Мне пришлось бы просить не согласиться с теми ответами, которые говорят, чтобы избежать отключения автозаполнения.
Первое, что нужно упомянуть, это то, что автозаполнение, не отключаемое явно в полях формы входа, является ошибкой PCI-DSS. Кроме того, если локальный компьютер пользователя скомпрометирован, злоумышленник может получить любые данные автозаполнения, поскольку они хранятся в открытом виде.
Есть, конечно, аргумент в пользу юзабилити, однако существует очень хороший баланс, когда дело доходит до того, какие поля формы должны иметь отключенное автозаполнение, а какие нет.
источник
Три варианта: Первый:
Во-вторых:
В-третьих (код JavaScript):
источник
На связанной или на самом деле, на совершенно противоположной ноте -
источник
Мы действительно использовали идею sasb для одного сайта. Это было медицинское программное приложение для управления кабинетом врача. Однако многие из наших клиентов были хирургами, которые использовали множество различных рабочих станций, в том числе полуобщественные терминалы. Поэтому они хотели убедиться, что врач, который не понимает смысла автоматически сохраняемых паролей или не обращает внимания, не может случайно оставить свои данные для входа легкодоступными. Конечно, это было до того, как идея частного просмотра стала появляться в IE8, FF3.1 и т. Д. Несмотря на это, многие врачи вынуждены использовать браузеры старой школы в больницах с ИТ, которые не изменятся.
Итак, у нас была страница входа, генерирующая случайные имена полей, которые работали бы только для этого поста. Да, это менее удобно, но это просто ударяет пользователя по поводу того, что он не хранит информацию для входа на общедоступных терминалах.
источник
Ни одно из решений не помогло мне в этом разговоре.
Я наконец-то понял, что решение на чистом HTML не требует Javascript , работает в современных браузерах (кроме IE; нужно было хотя бы 1 перехват, верно?) И не требует отключения автозаполнения для всей формы.
Просто отключите автозаполнение на
form
и затем включите его для любого, которыйinput
вы хотите, чтобы он работал в форме. Например:источник
Просто установите
autocomplete="off"
. Для этого есть очень веская причина: вы хотите предоставить собственную функцию автозаполнения!источник
Я пытался бесконечные решения, а потом я нашел это:
Вместо того, чтобы
autocomplete="off"
просто использоватьautocomplete="false"
Это так просто, и это работает как шарм в Google Chrome!
источник
Это работает для меня.
Мы также можем использовать эту стратегию в других элементах управления, таких как текст, выделение и т. Д.
источник
Я думаю, что
autocomplete=off
поддерживается в HTML 5.Спросите себя, почему вы хотите сделать это, хотя - это может иметь смысл в некоторых ситуациях, но не делайте это просто ради этого.
Это менее удобно для пользователей и даже не является проблемой безопасности в OS X (упомянутой Сореном ниже). Если вы беспокоитесь о том, что пароли пользователей могут быть украдены удаленно, регистратор нажатий клавиш может сделать это, даже если ваше приложение использует
autcomplete=off
.Как пользователь, который выбирает браузер, запоминающий (большую часть) мою информацию, я нахожу это раздражающим, если ваш сайт не запомнил мою.
источник
для входных данных, которые вы не хотите, чтобы они запоминали данные формы (
username
,password
и т. д.), как показано ниже:Надеюсь это поможет.
источник
$(document).on('focus', 'input:password[readonly="readonly"]', function () { $(this).prop('readonly', false).blur().focus(); });
onfocusout="this.setAttribute('readonly', 'readonly');"
Лучшее решение:
Запретить автозаполнение имени пользователя (или электронной почты) и пароля:
Запретить автозаполнение поля:
Пояснение:
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
источник
autocomplete
атрибута, и он по-прежнему отображает предыдущие записи в качестве предложений автозаполнения под вводом.autocomplete
, я все равно получаю выпадающий список на основе ранее введенных значений. Это нормально на рабочем столе, но не на Android Chrome.Немного опоздал к игре ... но я только столкнулся с этой проблемой и попробовал несколько сбоев, но этот работает для меня, найденный на MDN
источник
Добавление
autocomplete="off"
в тег формы отключит автозаполнение браузера (что ранее было введено в это поле) из всех
input
полей в этой конкретной форме.Проверено на:
источник
Добавление
autocomplete="off"
не собирается сокращать это.Измените атрибут типа ввода на
type="search"
.Google не применяет автозаполнение для входов с типом поиска.
источник
Используйте нестандартное имя и идентификатор для полей, чтобы вместо «name» было «name_». Браузеры не увидят его как поле имени. Самое приятное в этом то, что вы можете сделать это с некоторыми, но не со всеми полями, и он автоматически заполнит некоторые, но не все поля.
источник
Чтобы избежать недопустимого XHTML, вы можете установить этот атрибут, используя javascript. Пример использования jQuery:
Проблема в том, что пользователи без JavaScript получат функцию автозаполнения.
источник
попробуйте это тоже, если просто
autocomplete="off"
не работает:источник
Я не могу поверить, что это все еще проблема так долго после того, как об этом сообщили. Вышеуказанные решения не сработали для меня, так как сафари, казалось, знал, когда элемент не отображался или находился вне экрана, однако мне помогло следующее:
Надеюсь, это кому-нибудь пригодится!
источник
Итак, вот оно:
источник
Это проблема безопасности, которую браузеры игнорируют сейчас. Браузеры идентифицируют и сохраняют контент, используя входные имена, даже если разработчики считают, что информация является конфиденциальной и не должна храниться. Изменение имени ввода между двумя запросами решит проблему (но все равно будет сохранено в кеше браузера, а также увеличит кэш браузера). Попросить пользователя активировать или деактивировать параметры в настройках своего браузера не является хорошим решением. Проблема может быть исправлена в бэкэнде.
Вот мое исправление. Подход, который я реализовал в моей структуре. Все элементы автозаполнения генерируются со скрытым вводом, подобным этому:
Затем сервер обрабатывает переменные записи следующим образом:
Значение можно получить как обычно
И браузер не сможет предложить информацию из предыдущего запроса или от предыдущих пользователей.
Все работает как шарм, даже если браузер обновляет, хочет игнорировать автозаполнение или нет. Это был лучший способ решить проблему для меня.
источник
Ни один из упомянутых здесь хаков не работал для меня в Chrome. Здесь обсуждается вопрос: https://code.google.com/p/chromium/issues/detail?id=468153#c41.
Добавление этого внутри
<form>
работ (по крайней мере, пока):источник
maxlength="0"
не позволяет Firefox автоматически заполнить поле.Вы можете использовать при вводе.
Например;
источник