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");
Ответ 6
Вы все должны попробовать этот атрибут:
<input type="password" autocomplete="new-password" />
Видеть https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion#Preventing_autofilling_with_autocompletenew-password
Ответ 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()
.
.
.
Ответ 16
Добавьте autocomplete = "off" в свой тег формы, как описано в документе Mozilla
Для получения дополнительной информации см. следующую ссылку
Как отключить функцию автозаполнения
Ответ 17
Я понимаю, что это старый вопрос, но поскольку он по-прежнему имеет отношение к поисковым запросам Google, я считаю важным представить другое мнение, которое противоречит многим ответам здесь, которые, хотя и преднамеренно, несколько недальновидны.
Предотвращение автозаполнения входных данных входа может привести к множеству проблем. Нет никаких преимуществ и значительных недостатков. Люди плохо запоминают учетные данные, приводя к тому, что люди, не имеющие менеджеров паролей, используют одни и те же пароли на нескольких (часто критичных) сайтах. Если один из этих сайтов скомпрометирован, есть очень хороший шанс, что злоумышленник может зайти на другие сайты с одинаковыми учетными данными. Такие инструменты, как LastPass, Bitwarden, Dashlane, Onepassword и т.д., Существуют по уважительной причине: они помогают держать веб более безопасным местом для большинства пользователей, облегчая использование отдельных паролей на веб-сайт.
Mozilla, Google и Microsoft все это борются с этим и намеренно решили игнорировать директиву autocomplete="off"
во многих случаях, где она, вероятно, будет более полезной, в конечном счете. Для получения дополнительной информации об этом я бы рекомендовал взглянуть на следующие статьи из Mozilla, Google/Chromium, Microsoft и рабочей группы Web Hypertext Application Technology:
Теперь могут быть случаи, когда вы пишете внутреннее приложение в отрасли со строгими требованиями соответствия. Может показаться хорошей идеей отключить автозаполнение форм регистрации в этой среде, учитывая добавленный потенциал для совместного использования паролей, если оставить его в покое. Мой ответ на этот вопрос будет заключаться в том, что это выходит за рамки интерфейсного веб-разработчика и должно упасть до рабочего стола и команд ИТ-операций.
Существует множество способов, которыми ИТ-отделы могут обеспечить контроль над рабочими станциями, чтобы предотвратить автоматическое совместное использование паролей. Групповая политика, SCCM, предоставление учетной записи с минимальными привилегиями и т.д. - это всего лишь верхушка айсберга, и они гораздо более надежны, чем попытка сказать пользовательскому агенту отключить автозаполнение, когда он не предназначен для работы таким образом.
tl; dr: Пожалуйста, найдите время, чтобы понять платформу, для которой вы разрабатываете, и не работаете со спецификациями, чтобы отключить автозаполнение.