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

Dav*_*cia 96 html passwords

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

tva*_*son 122

尝试使用autocomplete="off".但不确定每个浏览器是否都支持它.MSDN文档在这里.

编辑:注意:大多数浏览器已放弃对此属性的支持.请参阅自动完成="关闭"是否与所有现代浏览器兼容?

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

  • 未来读者需要注意:所有主流浏览器都在忽略该属性.(见http://stackoverflow.com/a/21348793/37706) (9认同)
  • "这可以说应该由用户而不是网站设计师来完成." 这有两个技术和非技术原因.例如,不应记住一次性密码."输入PIN码第一位"的银行网站是另一个.不要忘记,业务分析师可能会决定他想要一个密码字段并从开发人员那里删除选择. (8认同)
  • 您还可以使用 HTTPS 交付页面,并通过 HTTP 标头或 META 标记防止缓存。这样,密码也不会被存储(至少在 Internet Explorer 中)。 (2认同)

mat*_*pie 59

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

我想补充一点,作为一个用户,我认为这非常烦人,需要克服麻烦.我强烈建议不要使用它,否则很可能会加剧您的用户.

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

  • 在用户可以设置与其登录无关的密码的表单上,启用自动完成实际上是更烦人的选项 - 浏览器可能提供保存密码,它实际上无法执行任何操作.此外,如果安全性是一个敏感问题,我不会假设所有公共计算机都已正确配置. (29认同)
  • +1"不要惹恼您的用户".这正是这种功能所做的.就像强制关闭缓存的网站一样,后退按钮会清除表单.极度刺激. (22认同)
  • 它对信用卡号码字段非常有用.PayPal的表单存储在每个浏览器中,使用您的计算机的任何人都可以重新输入所有数据,因此您必须手动删除所有记住的字段. (14认同)
  • +1我完全同意.它用于管理员编辑客户资料页面,如果您打算更改密码,则只需输入密码.这样,管理员每次编辑客户信息时都不会更改密码. (6认同)
  • 我正在使用它一次性使用密码.正如jrb所说,如果浏览器存储它会非常烦人. (3认同)
  • 在更改密码部分使用此选项.输入旧的,新的并确认新的.从初次登录时记住旧密码对我们来说是安全问题. (2认同)
  • 在"创建用户"表单上也很有用,您不希望保存名称和/或密码.可惜所有浏览器都忽略了这个用户名/密码字段对. (2认同)

Sar*_*CSE 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>
Run Code Online (Sandbox Code Playgroud)

#其他方式

 <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>
Run Code Online (Sandbox Code Playgroud)

//你需要添加属性autocomplete ="off",或者你可以在输入框中添加class .auto-complete-off并享受

例:

  <input id="passfld" type="password" autocomplete="off" />
    OR
  <input id="passfld" class="auto-complete-off" type="password"  />
Run Code Online (Sandbox Code Playgroud)

  • 这可以防止浏览器存储密码而不是阻止自动完成,这在我的场景中是更好的解决方案. (4认同)

小智 5

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

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

相对风险:低

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

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

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

  • 只是在这里添加评论,原因是您不想保存密码.我维护一个包含用户帐户的网站,管理员可以在其中更改用户的密码.客户目前激怒了Chrome提供的每个用户_每次单独保存在"更改密码"表单上输入的密码,因为它错误地将编辑用户表单标识为登录表单.显然,给出简单的指示,例如"只需点击永不记住密码"就超出了他们的范围. (5认同)

小智 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>
Run Code Online (Sandbox Code Playgroud)

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


Cap*_*tic 5

这是最好的答案,也是最简单的!在您的字段前面放置一个额外的密码字段input并设置display:none,以便当浏览器填写它时,它会在input您不关心的情况下进行操作。

改变这个:

<input type="password" name="password" size="25" class="input" id="password" value="">
Run Code Online (Sandbox Code Playgroud)

对此:

<input type="password" style="display:none;">
<input type="password" name="password" size="25" class="input" id="password" value="">
Run Code Online (Sandbox Code Playgroud)


Bha*_*kar 5

<input type="password" placeholder="Enter New Password" autocomplete="new-password">
Run Code Online (Sandbox Code Playgroud)

干得好。

  • 就是这样,有很多解决方法,就这么简单,用最新版本的 Firefox (v67) 和 Chrome (75) 进行了测试。 (2认同)