Ответ 1
Добавьте autocomplete="off"
к вашим элементам <input>
. Работает во всех современных браузерах, IIRC.
Сохранение и автоматическая регистрация имени пользователя/пароля - это функция большинства современных браузеров. И пользователь обычно может отключить эту функцию для каждого домена. Но существует ли стандартный способ для самого сайта предотвращать кеширование паролей?
Акцент здесь кросс-браузер, поэтому я при необходимости использовал бы несколько параллельных механизмов.
(Я видел, что кеширование эффективно отключается при наличии нестандартных полей входа, например, лишнее скрытое поле пароля. Но я бы предпочел не зависеть от побочных эффектов, поведение которых неожиданно может измениться в будущем).
И наоборот, существуют ли там браузеры/версии, которые реализуют кэширование паролей без какой-либо функции отключения?
Добавьте autocomplete="off"
к вашим элементам <input>
. Работает во всех современных браузерах, IIRC.
Я бы предположил, что браузеры сохраняют поля формы при отправке формы. Что делать, если вы использовали AJAX, чтобы получить значение поля пароля, отправить его, а затем очистить поле? Форма никогда не будет представлена, поэтому браузер теоретически никогда не сможет сохранить значения.
Введите пароль для ввода произвольно сгенерированного имени, которое вы можете распознать только. Сохраните это имя, например, в скрытом поле, а затем используйте его, чтобы получить вставленный пароль. Таким образом, даже если браузер кэширует пароль, он не сможет вернуть его в следующий раз, когда пользователь посещает.
Ваши пользователи, скорее всего, в этот момент начнут кэшировать пароли в постите на стороне монитора, но это действительно совсем другое сражение.
Тот же метод хорошо работает против спама, поскольку большинство ботов полагаются на поиск общих имен полей.
AFAIK, маскированные поля (те, которые показывают '*' вместо введенного вами символа) никогда не сохраняются для автозаполнения. Вы хотите, чтобы пользователь не помнил пароль на вашем сайте в браузере, защищающем паролем?
Просто добавьте еще одно поле пароля между именем пользователя и паролем и установите стиль для отображения.
<!-- Username label and text here> ... <--!>
<input type="password" id='txtPasswordDud' style='display: none;' />
<!-- Actual Password label and text here> ... <--!>