【发布时间】:2010-10-02 20:51:17
【问题描述】:
我记得有一种方法可以让<input type="password" /> 浏览器不提示用户保存密码。但我正在画一个空白。是否有 HTML 属性或一些 JavaScript 技巧可以做到这一点?
【问题讨论】:
我记得有一种方法可以让<input type="password" /> 浏览器不提示用户保存密码。但我正在画一个空白。是否有 HTML 属性或一些 JavaScript 技巧可以做到这一点?
【问题讨论】:
尝试使用autocomplete="off"。不过,不确定是否每个浏览器都支持它。 MSDN 文档here。
编辑:注意:大多数浏览器已经放弃了对这个属性的支持。见Is autocomplete="off" compatible with all modern browsers?
这可以说应该留给用户而不是网站设计者。
【讨论】:
<input type="password" autocomplete="off" />
我想补充一点,作为用户,我认为这非常很烦人,而且是一个需要克服的麻烦。我强烈建议不要使用它,因为它很可能会激怒您的用户。
MRU中已经没有存储密码了,正确配置的公用机甚至不会保存用户名。
【讨论】:
你可以使用JQuery,通过id选择项目:
$("input#Password").attr("autocomplete","off");
或按类型选择项目:
$("input[type='password']").attr("autocomplete","off");
也可以:
你可以使用纯Javascript:
document.getElementById('Password').autocomplete = 'off';
【讨论】:
至于安全问题,以下是安全顾问将就整个现场问题告诉您的内容(这是来自实际的独立安全审计):
启用 HTML 自动完成 - HTML 表单中的密码字段已启用自动完成。大多数浏览器都具有记住在 HTML 表单中输入的用户凭据的功能。
相对风险:低
受影响的系统/设备: o https://*******/
我也同意这应该涵盖包含真正私人数据的任何字段。我认为,只要该站点要访问任何应保持安全的内容[普遍或符合法律合规要求],就可以强制一个人始终输入他们的信用卡信息、CVC 代码、密码、用户名等。例如:购买表格、银行/信贷网站、税务网站、医疗数据、联邦、核等 - 不是 Stack Overflow 或 Facebook 等网站。
其他类型的网站 - 例如TimeStar Online 用于上班和下班 - 这很愚蠢,因为我总是在工作中使用相同的 PC/帐户,我无法在该网站上保存凭据 - 奇怪的是,我可以在我的 Android 上但不能在 iPad 上。即使是共享的个人电脑,这也不会太糟糕,因为替别人打卡/打卡除了惹恼你的主管之外没有任何作用。 (他们必须进去删除错误的拳头——只是选择不保存在公共电脑上)。
【讨论】:
你也可以像下面这样使用它
$('#Password').attr("autocomplete", "off");
setTimeout('$("#Password").val("");', 2000);
【讨论】:
我用另一种方式解决了。你可以试试这个。
<input id="passfld" type="text" autocomplete="off" />
<script type="text/javascript">
// Using jQuery
$(function(){
setTimeout(function(){
$("input#passfld").attr("type","password");
},10);
});
// or in pure javascript
window.onload=function(){
setTimeout(function(){
document.getElementById('passfld').type = 'password';
},10);
}
</script>
#另一种方式
<script type="text/javascript">
function setAutoCompleteOFF(tm){
if(typeof tm =="undefined"){tm=10;}
try{
var inputs=$(".auto-complete-off,input[autocomplete=off]");
setTimeout(function(){
inputs.each(function(){
var old_value=$(this).attr("value");
var thisobj=$(this);
setTimeout(function(){
thisobj.removeClass("auto-complete-off").addClass("auto-complete-off-processed");
thisobj.val(old_value);
},tm);
});
},tm);
}catch(e){}
}
$(function(){
setAutoCompleteOFF();
});
</script>
//你需要添加属性autocomplete="off"或者你可以在输入框中添加类.auto-complete-off来享受
例子:
<input id="passfld" type="password" autocomplete="off" />
OR
<input id="passfld" class="auto-complete-off" type="password" />
【讨论】:
我尝试了以下方法,似乎适用于任何浏览器:
<input id="passfld" type="text" autocomplete="off" />
<script type="text/javascript">
$(function(){
var passElem = $("input#passfld");
passElem.focus(function() {
passElem.prop("type", "password");
});
});
</script>
这种方式比使用超时技术更安全,因为它保证了当用户聚焦时输入字段将屈服于密码。
【讨论】:
这是最好的答案,也是最简单的!在您的 input 字段前面放置一个额外的密码字段并设置 display:none ,这样当浏览器填写它时,它会在您不关心的 input 中执行它。
改变这个:
<input type="password" name="password" size="25" class="input" id="password" value="">
到这里:
<input type="password" style="display:none;">
<input type="password" name="password" size="25" class="input" id="password" value="">
【讨论】:
display:none 对我不起作用(Chrome 61 OSX),但这样做:<input type="password" style="position: absolute; top: -1000px;">
在大多数主流浏览器的情况下,在外部输入且未连接到任何表单都会使浏览器误以为没有提交。在这种情况下,您必须使用纯 JS 验证来登录,并且还需要对密码进行加密。
之前:
<form action="..."><input type="password"/></form>
之后:
<input type="password"/>
【讨论】:
我在 Firefox 和 Chrome 上发现了以下作品。
<form ... > <!-- more stuff -->
<input name="person" type="text" size=30 value="">
<input name="mypswd" type="password" size=6 value="" autocomplete="off">
<input name="userid" type="text" value="security" style="display:none">
<input name="passwd" type="password" value="faker" style="display:none">
<!-- more stuff --> </form>
所有这些都在表单部分中。 "person" 和 "mypswd" 是你想要的,但是浏览器会保存一次 "userid" 和 "passwd",因为它们不会改变。如果您真的不需要它,您可以消除“人员”字段。在这种情况下,您只需要“mypswd”字段,该字段可能会以某种方式为您的网页用户所知。
【讨论】:
我可以让 firefox、edge 和 Internet Explorer 关闭自动完成功能的唯一方法是在我的表单语句中添加 autocomplete="false",例如:
<form action="postingpage.php" autocomplete="false" method="post">
我必须将 autocomplete="off" 添加到我的表单输入中并将类型更改为 text Like:
<input type="text" autocomplete="off">
看来这个html代码需要用浏览器标准化。应修改表单类型 = 密码,使其覆盖浏览器设置。 我唯一的问题是我丢失了输入屏蔽。但从好的方面来说,烦人的“这个网站不安全”并没有出现在 Firefox 中。
对我来说,这没什么大不了的,因为用户已经过身份验证,并且是我更改的用户名和密码部分
【讨论】:
另请阅读this answer,他正在使用这种适用于任何地方的简单解决方案(另请参阅 Safari 移动版的修复):
<input type="password" readonly onfocus="this.removeAttribute('readonly');"/>
【讨论】:
<input type="password" placeholder="Enter New Password" autocomplete="new-password">
给你。
【讨论】:
鉴于 autocomplete=off 已被弃用,我建议使用更新的解决方案。
将您的密码字段设置为普通文本字段,并使用 CSS 用“光盘”屏蔽您的输入。代码应如下所示:
<input type="text" class="myPassword" />
input .myPassword{
text-security:disc;
-webkit-text-security:disc;
-mox-text-security:disc;
}
请注意,这在 Firefox 浏览器上可能无法正常工作,需要额外的解决方法。在此处阅读更多信息:https://stackoverflow.com/a/49304708/5477548。
解决方案取自this link,但为了遵守 SO“无热链接”,我在这里总结了它。
【讨论】:
你可以使用这个: 自动完成=“新密码”
例子:
<input type="password" placeholder="Enter New Password" autocomplete="new-password">
【讨论】: