Autocomplete = 'off' не работает на firefox

Я столкнулся с проблемой браузера:

Я создал 2 страницы входа в один домен.

  • www.example.com/login.cfm
  • www.example.com/newLogin.cfm

Я помещаю имя формы для двух форм на две страницы. Также я помещаю autocomplete = 'off' для второй формы и для текстовых полей внутри этой формы. (Но она включена для первой формы).

Теперь, если я сохраню имя пользователя и пароль во время входа в систему из www.testDomain.com/login.cfm в браузере, тогда список имен пользователей автоматически заполняется в поле имени пользователя второй страницы входа, даже если автозаполнение выключено. Мне нужно заблокировать это по соображениям безопасности. Есть какой-либо способ сделать это? Я использую FireFox V21.

Ответы

Ответ 1

$("#CVV").on("focusout", function() {
    if ($(this).val() == "") {  
      $(this).attr("type", "text");
    }   
});
<input type="text" name="username" class="input" ID="CVV" onfocus="removeErr('CVV'); $(this).attr('type', 'password');">

Ответ 2

Это самое чистое решение, которое я нашел, чтобы Firefox не работал автоматически.

 <!-- The text and password here are to prevent FF from auto filling my login credentials because it ignores autocomplete="off"-->
 <input type="text" style="display:none">
 <input type="password" style="display:none">

Добавьте этот код snip-it над вашим вводом пароля типа.

Насколько я могу судить, Firefox ищет ввод типа Пароль и заполняет пароль, а затем добавляет имя пользователя на ввод текста типа над ним. Без имени или идентификатора входные данные не добавляются в сообщение, но это все равно взлома.

Ответ 3

Это работает для меня:

<input type="text" name="username" value=" " onclick="if(this.value == ' ') this.value=''" >

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

Ответ 4

Firefox версии 61 этого, кажется, достаточно, чтобы отключить автозаполнение в формах:

<input type="password" hidden />

Все входные данные после этого в верхней части формы игнорируются.

Ответ 5

Я сталкивался с этой проблемой в течение длительного времени. Firefox сохранил входные значения даже при перезагрузке страницы. Установка атрибута autocomplete в off не решена.

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

Чтобы решить эту проблему, просто сбросьте форму после загрузки страницы как

 $('form').trigger("reset");

Ответ 7

Я заметил это поведение и в последнее время - только Firefox; кажется, проблема с атрибутом autocomplete = "off" .

Используется для работы отлично до месяца назад - и распался примерно в то время, когда была выпущена версия Firefox 30.0.

Все еще отлично работает в Chrome + IE;

Ответ 8

https://bugzilla.mozilla.org/show_bug.cgi?id=956906

http://lists.w3.org/Archives/Public/public-webapps/2014JanMar/0015.html

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

Ответ 9

Try this :
<input type="password" style="display:none">
<input type="password" name="password">

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

Если новый пароль (или сброс) использует autocomplete = "new-password" вместо autocomplete = "off" .

Надеюсь, что это поможет.

Ответ 10

Я попробовал все вышеперечисленное с Firefox 52, и ничего не получилось. Я получил его для работы с jQuery, хотя и заменив значение на исходное значение, или:

jQuery(window).load( function () {
    email = jQuery('#auth_user_email');
    email.prop('value', email.attr('value'));
});

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

Ответ 11

В Firefox не обнаруживается, что эти поля должны менять свой тип до скрытого до публикации.

Вы можете использовать jQuery или JavaScript, чтобы установить это на onclientclick в своей кнопке отправки.

Пример: <script type="text/javascript"> function setHidden() { $('.input').prop('type', 'hidden'); } </script>

<input type="text" name="username" class="input">
<input type="password" name="password" class="input" >
<asp:Button ID="ubtnLogin" Text='OK' runat="server" OnClick="btnLogin_Click" OnClientClick='setHidden();' />

Не забудьте очистить кеш браузера перед тестированием или использовать частный режим (CTRL + SHIFT + P).

Ответ 12

благодаря идее albert.garipov я сделал решение, которое имитирует функциональность пароля типа. это не показывает пароль на входе

<input type="text" id="password" onkeyup="OnChangePassword()">

function OnChangePassword()
{ 
  if ($("#password").val() == "") {
      $("#password").attr('type', 'text');
  }
  if ($("#password").val() != "") {
      $("#password").attr('type', 'password');
  }
}

Ответ 13

Просто введите случайное значение в автозаполнение.

<input autocomplete = "!!1337!!">

Ответ 14

Используйте тег autocomplete = "off" в конце вашего тега ввода:

Например,

<input type="text" name="username" autocomplete="off" />

Ответ 15

1. Добавьте к вашему решению следующий класс:

using System.Web.Mvc;

namespace MyNamespace
{
    public static MvcHtmlString DisableAutoComplete(this HtmlHelper htmlHelper)
        {
            var UserName = new TagBuilder("input");            
            UserName.MergeAttribute("type", "text");
            UserName.MergeAttribute("style", "display:none");
            var Password = new TagBuilder("input");
            Password.MergeAttribute("type", "password");
            Password.MergeAttribute("style", "display:none");            
            return MvcHtmlString.Create(UserName.ToString(TagRenderMode.SelfClosing)+Password.ToString(TagRenderMode.SelfClosing));
        }
}

2. Добавить @using MyNamespace в верхней части вашего представления

3.Add @Html.DisableAutoComplete() внутри формы до ввода пароля. в моем случае:

@using (Html.BeginForm()) 
{
@Html.AntiForgeryToken()
@Html.DisableAutoComplete()
.
.
.

Ответ 17

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

Предотвращение автозаполнения входных данных входа может привести к множеству проблем. Нет никаких преимуществ и значительных недостатков. Люди плохо запоминают учетные данные, приводя к тому, что люди, не имеющие менеджеров паролей, используют одни и те же пароли на нескольких (часто критичных) сайтах. Если один из этих сайтов скомпрометирован, есть очень хороший шанс, что злоумышленник может зайти на другие сайты с одинаковыми учетными данными. Такие инструменты, как LastPass, Bitwarden, Dashlane, Onepassword и т.д., Существуют по уважительной причине: они помогают держать веб более безопасным местом для большинства пользователей, облегчая использование отдельных паролей на веб-сайт.

Mozilla, Google и Microsoft все это борются с этим и намеренно решили игнорировать директиву autocomplete="off" во многих случаях, где она, вероятно, будет более полезной, в конечном счете. Для получения дополнительной информации об этом я бы рекомендовал взглянуть на следующие статьи из Mozilla, Google/Chromium, Microsoft и рабочей группы Web Hypertext Application Technology:

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

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

tl; dr: Пожалуйста, найдите время, чтобы понять платформу, для которой вы разрабатываете, и не работаете со спецификациями, чтобы отключить автозаполнение.