我正面临浏览器问题:
我创建了2个相同域的登录页面。
我在两个页面中为2个表单添加了不同的表单名称。另外,我为第二个表单和该表单中的文本字段添加了autocomplete = 'off'
。(但它是第一个表单的。)
现在,如果我在浏览器中从www.testDomain.com/login.cfm
登录时保存了用户名和密码,那么即使自动完成关闭,用户名列表也会在第二个登录页面的用户名字段中自动填充。出于安全原因,我需要阻止它。有没有办法做到这一点?我正在使用FireFox V21。
答案 0 :(得分:36)
$("#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');">
答案 1 :(得分:31)
这是我发现阻止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">
将此代码片段添加到您输入的密码类型上方。
据我所知,Firefox正在寻找类型为Password的输入,并填写密码,然后将用户名添加到其上方类型文本的输入中。没有名称或ID,输入不会添加到帖子中,但这仍然是一个黑客。
答案 2 :(得分:1)
这对我有用:
<input type="text" name="username" value=" " onclick="if(this.value == ' ') this.value=''" >
点击here了解更多相关信息。
答案 3 :(得分:1)
Firefox 61版本似乎足以禁用表单中的自动完成功能:
[Code]
procedure ISSI_InitializeWizard;
begin
{ Your BASS code goes here }
end;
#define ISSI_InitializeWizard
#define ISSI_IncludePath "C:\ISSI"
#include ISSI_IncludePath+"\_issi.isi"
此表单顶部的所有输入将被忽略。
答案 4 :(得分:1)
我很久没有遇到这个问题了。 Firefox即使页面重新加载也保持输入值。将autocomplete
属性设置为off
并不能解决问题。
表单缓存是一种非常有用的用户体验机制。但是,在将文本框或texareas的值转换为其他语言的一小部分用例中,这些让我很头疼。
要解决此问题,只需在页面加载为后简单地重置表单
$('form').trigger("reset");
答案 5 :(得分:1)
你们都应该尝试以下属性:
<input type="password" autocomplete="new-password" />
答案 6 :(得分:1)
密码字段对我没有任何帮助,所以我会分享我的把戏
<input name="password" type="text" onkeydown="this.type='password'">
我相信它仍然是安全的,并且可以在Chrome,Firefox和其他操作系统上运行
答案 7 :(得分:0)
我最近也注意到了这种行为 - 仅限Firefox; &#39; autocomplete =&#34; off&#34; &#39;似乎是一个问题。属性。
用于工作到一个月前 - 并且在 Firefox版本30.0 发布的时候分手了。
在Chrome + IE上运行良好;
答案 8 :(得分:0)
https://bugzilla.mozilla.org/show_bug.cgi?id=956906
http://lists.w3.org/Archives/Public/public-webapps/2014JanMar/0015.html
密码类型输入字段已禁用自动填充功能。上面的链接分别提到了FireFox和IE,但是我发现将自动完成设置为off也不起作用。
答案 9 :(得分:0)
Try this :
<input type="password" style="display:none">
<input type="password" name="password">
类型必须相同。隐藏的密码将被填写而不是真实的密码输入。
如果是新密码(或已重置),请使用 autocomplete =“new-password”,而不是 autocomplete =“off”。
希望它有所帮助。
答案 10 :(得分:0)
我使用Firefox 52尝试了以上所有功能,但没有任何效果。我确实让它与jQuery一起工作并用原始值替换值,或者:
jQuery(window).load( function () {
email = jQuery('#auth_user_email');
email.prop('value', email.attr('value'));
});
在jQuery中,prop是文档中的当前值,attr是首次检索/加载文档时的原始值。我使用了load函数,因为它在ready函数之后运行,我相信在自动完成之后肯定会覆盖输入值。你也可以用密码输入做同样的事情。
答案 11 :(得分:0)
由于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');
}
}
答案 12 :(得分:0)
只需在自动完成中输入一个随机值即可。
<input autocomplete = "!!1337!!">
答案 13 :(得分:-1)
将 autocomplete =“off”添加到您的表单标记中,如Mozilla文档中所述
检查以下链接以获取更多信息
答案 14 :(得分:-1)
使用autocomplete =&#34; off&#34;输入标记末尾的标记:
对于前。
<input type="text" name="username" autocomplete="off" />
答案 15 :(得分:-1)
我意识到这是一个老问题,但由于它仍然与谷歌搜索相关,我认为提出另一种观点反对这里的许多答案很重要,而这些答案虽然用心良苦,但却有点短视。 / p>
防止登录输入的自动填充会导致很多问题。没有任何好处和重大缺点。人们不记得凭证,导致没有密码管理员的人在多个(通常是关键的)网站上使用相同的密码。如果其中一个站点遭到入侵,则攻击者很有可能使用相同的凭据登录其他站点。 LastPass,Bitwarden,Dashlane,Onepassword等工具都有充分的理由:它们通过促进每个网站使用单独的密码,帮助大多数用户保持网络安全。
Mozilla,谷歌和微软都加入了这一行列,并且故意决定在很多情况下忽略autocomplete="off"
指令,从长远来看它可能更有利。有关此问题的更多详细信息,我建议您查看Mozilla,Google / Chromium,Microsoft和Web超文本应用技术工作组的以下文章:
现在,您可能会在具有严格合规性要求的行业中编写内部应用程序。在此环境中禁用自动填充登录表单似乎是一个好主意,因为如果不加考虑,可以增加共享密码的可能性。我的答案是,这超出了前端Web开发人员的范围,应该归功于桌面体验和IT运营团队。
IT部门可以通过多种方式对工作站实施控制,以防止自动密码共享。组策略,SCCM,最低权限帐户配置等都只是冰山一角,而且它们远比尝试告诉用户代理禁用自动完成时更强大旨在以这种方式运作。
tl;博士:请花点时间了解您正在开发的平台,并且不要使用规范来禁用自动完成功能。