输入类型=密码,不要让浏览器记住密码

时间:2009-01-22 07:13:56

标签: html passwords

我记得有办法找到一个<input type="password" />,以便浏览器提示用户保存密码。但我画了一个空白。是否有HTML属性或一些JavaScript技巧可以做到这一点?

14 个答案:

答案 0 :(得分:119)

尝试使用autocomplete="off"。但不确定每个浏览器是否都支持它。 MSDN docs here

编辑:注意:大多数浏览器都不再支持此属性。见Is autocomplete="off" compatible with all modern browsers?

这可以说应该留给用户而不是网站设计师。

答案 1 :(得分:60)

<input type="password" autocomplete="off" />

我想补充一点,作为一个用户,我认为这是非常令人烦恼并且需要克服的麻烦。我强烈建议不要使用它,因为它很可能会加剧您的用户。

密码尚未存储在MRU中,正确配置的公共机器甚至不会保存用户名。

答案 2 :(得分:12)

我用另一种方式解决了。你可以试试这个。

<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>

#another way

 <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"  />

答案 3 :(得分:5)

至于安全问题,安全顾问会告诉您整个现场问题(这是来自实际的独立安全审核):

  

启用HTML自动填充 - HTML表单中的密码字段已启用自动填充功能。大多数浏览器都有记住输入HTML表单的用户凭据的工具。

     

相对风险:低

     

受影响的系统/设备:      o https:// * ** * *** /

我也同意这应该包含包含真正私有数据的任何字段。我觉得,只要该网站要访问任何应该保密的内容(通用或法律合规性要求),就可以强制一个人总是输入他们的信用卡信息,CVC代码,密码,用户名等。例如:购买表格,银行/信用网站,税务网站,医疗数据,联邦,核等 - Stack Overflow或Facebook等网站。

其他类型的网站 - 例如TimeStar Online用于上班和下班 - 这是愚蠢的,因为我总是在工作中使用相同的PC /帐户,我无法保存该站点上的凭据 - 奇怪的是,我可以在我的Android上但不能在iPad上。即使是共享PC也不会太糟糕,因为为其他人输入/输出实际上并没有做任何事情,只会让你的主管烦恼。 (他们必须进入并删除错误的打击 - 只需选择不保存在公共电脑上)。

答案 4 :(得分:5)

我尝试了以下内容,它似乎适用于任何浏览器:

<input id="passfld" type="text" autocomplete="off" />

<script type="text/javascript">
    $(function(){  
        var passElem = $("input#passfld");
        passElem.focus(function() { 
            passElem.prop("type", "password");                                             
        });
    });
</script>

这种方式比使用超时技术更安全,因为它保证输入字段在用户关注时输出密码。

答案 5 :(得分:4)

这是最好的答案,也是最简单的答案!在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="">

答案 6 :(得分:2)

您可以使用JQuery,按ID选择项目:

$("input#Password").attr("autocomplete","off");

或按类型选择项目:

$("input[type='password']").attr("autocomplete","off");

或者:

您可以使用纯Javascript:

document.getElementById('Password').autocomplete = 'off';

答案 7 :(得分:2)

另请阅读this answer他正在使用这个适用于所有地方的简单解决方案(另请参阅Safari移动版的修复程序):

<input type="password" readonly onfocus="this.removeAttribute('readonly');"/>

答案 8 :(得分:1)

你也可以像下面那样使用它

$('#Password').attr("autocomplete", "off");
setTimeout('$("#Password").val("");', 2000);

答案 9 :(得分:0)

在大多数主流浏览器的情况下,在任何形式之外输入并且没有连接到任何表单会诱使浏览器认为没有提交。在这种情况下,您必须使用纯JS验证进行登录,并且还需要加密密码。

在:

<form action="..."><input type="password"/></form>

后:

<input type="password"/>

答案 10 :(得分:0)

我在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>

所有这些都在表格部分内。 &#34;人&#34;和&#34; mypswd&#34;是你想要的,但浏览器将保存&#34; userid&#34; &#34; passwd&#34;曾经,而且再也没有,因为他们不会改变。你可以消除&#34; person&#34;如果你真的不需要它。在这种情况下,你想要的只是&#34; mypswd&#34;字段,它可能以某种方式改变您的网页用户所知。

答案 11 :(得分:0)

我可以让firefox,edge和Internet Explorer关闭自动完成的唯一方法是添加autocomplete =&#34; false&#34;在我的表格声明中:

  <form action="postingpage.php" autocomplete="false" method="post">

我必须添加autocomplete =&#34; off&#34;到我的表单输入并将类型更改为文本喜欢:

     <input type="text" autocomplete="off">

似乎这个html代码需要使用浏览器进行标准化。应修改表单类型=密码,以便覆盖浏览器设置。  我唯一的问题是我丢失了输入屏蔽。但从好的方面看,这个网站并不安全。没有出现在Firefox中。

对我来说,这不是什么大问题,因为用户已经过身份验证,而且我更改了用户名和密码部分

答案 12 :(得分:0)

<input type="password" placeholder="Enter New Password" autocomplete="new-password">

你在这里。

答案 13 :(得分:0)

不建议使用 autocomplete = off ,我建议使用较新的解决方案。

将您的密码字段设置为普通文本字段,并使用CSS使用“ discs”屏蔽您的输入。代码应如下所示:

<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“无热链接”,我在此进行了总结。