当前位置:  开发笔记 > 编程语言 > 正文

禁用浏览器"保存密码"功能

如何解决《禁用浏览器"保存密码"功能》经验,为你挑选了10个好方法。

为政府医疗保健机构工作的乐趣之一就是必须处理与处理PHI(受保护的健康信息)有关的所有偏执.不要误会我的意思,我尽一切可能保护人们的个人信息(健康,经济,上网习惯等),但有时人们会有点过于兴奋.

例证:我们的一位州客户最近发现浏览器提供了保存密码的便利功能.我们都知道它已经存在了一段时间并且是完全可选的,并且由最终用户决定是否使用或不使用它.然而,目前有一点骚动,我们被要求找到一种方法来禁用我们网站的功能.

问题:网站是否有办法告诉浏览器不要提供密码?我很长一段时间都在网络开发,但不知道我之前遇到过这种情况.

任何帮助表示赞赏.



1> Markus Olsso..:

我不确定它是否适用于所有浏览器,但您应该尝试在表单上设置autocomplete ="off".

禁用表单和密码存储提示以及阻止在会话历史记录中缓存表单数据的最简单方法是使用值为"off"的自动完成表单元素属性.

来自http://developer.mozilla.org/En/How_to_Turn_Off_Form_Autocompletion

一些小的研究表明这适用于IE,但我不会保证;)

@Joseph:如果严格要求通过实际标记传递XHTML验证(不知道为什么会这样),理论上你可以在之后用javascript添加这个属性但是禁用了js的用户(可能是你的用户库可忽略不计的数量)如果您的网站需要js,则为零,但仍会保存其密码.

jQuery示例:

$('#loginForm').attr('autocomplete', 'off');


只是一个快速评论,因为这是在改变,HTML5将自动完成属性添加到规范,所以它现在有效.
仅供参考,微软决定Internet Explorer 11将不再为`input type ="password"字段提供`autocomplete ="off"`.http://msdn.microsoft.com/en-us/library/ie/ms533486%28v=vs.85%29.aspx
现在,不适用于Firefox 38+ https://www.mozilla.org/en-US/firefox/38.0/releasenotes/
就像@JWLim提到IE 11放弃了对禁用密码保存功能的支持一样,Firefox也是如此.https://bugzilla.mozilla.org/show_bug.cgi?id=956906
Firefox(不幸的是)跟随微软的领先,并"删除"了自动完成支持.有关详细信息,请参阅以下问题讨论中的注释100:https://bugzilla.mozilla.org/show_bug.cgi?id = 956906
这不适用于任何现代浏览器。
firefox(3.6.15)似乎根本没有关于autocomplete ="off".我尝试将其添加到表单和密码字段,但是当我按用户名字段上的选项卡时它仍然填充了密码.我尝试将pwd字段的name属性更改为其他内容,但看起来它使用了type ="password"属性(尽管我读取它与'name'属性匹配).那也行不通.还有什么别的我可以试试吗?
您可以使用Chrome Autocomplete = On扩展程序来解决此问题:) https://chrome.google.com/webstore/detail/autocomplete-on/
大多数现代浏览器人都忽略了这一点...... http://caniuse.com/#feat=input-autocomplete-onoff

2> Mike Stone..:

我一直在努力解决这个问题,这个问题有着独特的变化.特权用户无法使用已保存的密码,但普通用户需要它.这意味着特权用户必须登录两次,第二次强制不保存密码.

根据此要求,标准autocomplete="off"方法不适用于所有浏览器,因为密码可能是从第一次登录时保存的.一位同事在使用新密码字段聚焦时找到了替换密码字段的解决方案,然后专注于新密码字段(然后挂钩相同的事件处理程序).这有效(除了它在IE6中引起了无限循环).也许有一种解决方法,但它导致我偏头痛.

最后,我试着在表单之外输入用户名和密码.令我惊讶的是,这有效!它适用于IE6,以及Linux上当前版本的Firefox和Chrome.我还没有进一步测试,但我怀疑它在大多数浏览器中都有效(但如果有一个浏览器并不关心是否没有形式,那就不会让我感到惊讶).

下面是一些示例代码,以及一些jQuery以使其工作:





  
  
  




我喜欢你的解决方案,并在我的网站上实现类似,是荒谬的今天,浏览器不提供一个简单的方法来解决这个问题.

3> Murat Yıldız..:

只是用

readonly onfocus ="this.removeAttribute('readonly');"

此外

自动填充="关闭"

到你不想记住表单数据(输入(S) username,password等等),如下图所示:




测试在主流浏览器的最新版本的IE Google Chrome,Mozilla Firefox,Microsoft Edge等,就像一个魅力.希望这可以帮助...


刚刚测试**Mozilla Firefox 52.0**,**谷歌Chrome 57.0**,**Microsoft Edge 38.1**和工作就像一个魅力!...

4> whyAto8..:

好吧,这是一个非常古老的帖子,但我仍然会提供我的解决方案,我的团队一直试图实现这一目标.我们刚刚在表单中添加了一个新的input type ="password"字段,并将其包装在div中并使div隐藏起来.确保此div在实际密码输入之前.这对我们有用,它没有提供任何保存密码选项

Plunk - http://plnkr.co/edit/xmBR31NQMUgUhYHBiZSg?p=preview

HTML:

CSS:

.hidden {display:none;}



5> Joel Coehoor..:

您可以通过随机化每个节目上用于密码字段的名称来阻止浏览器匹配表单.然后浏览器会看到相同网址的密码,但无法确定密码是否相同.也许它控制着别的东西.

更新:请注意,这应该是除了使用自动完成或其他手段,而不是它们的替代,供他人指示的原因.

另请注意,这只会阻止浏览器自动填写密码.它不会阻止它将密码存储在浏览器选择使用的任何安全级别.


[@Joel](#32409)可能会阻止表单自动填充,但会阻止浏览器要求保存此_supposed_新表单的密码?
我不相信这会现在奏效.在FF 13中,我有一个包含多个密码字段的表单,所有密码字段都有不同的名称.FF,一旦保存该页面的密码,将保存的密码粘贴到所有密码字段中.它并不关心字段的名称(例如,我有"new_password"和"old_password",并且保存的密码被转储到它们中).在这种特殊形式中,我没有用于保存密码的用户名 - 只有两个密码字段,以防万一.

6> David Schmit..:

使用真正的双因素身份验证来避免单独依赖于密码,这些密码可能存储在比用户的浏览器缓存更多的位置.


@Jonathan Pity,我更喜欢*认证*
顺便说一下,它的身份验证不是身份验证

7> venimus..:

最干净的方法是使用autocomplete="off"标记属性,但是当您使用Tab切换字段时,Firefox无法正确遵守它.

你可以阻止这种情况的唯一方法是添加一个虚假的隐藏密码字段,欺骗浏览器在那里填充密码.




这是一个丑陋的黑客,因为你改变了浏览器的行为,这应该被认为是不好的做法.只有在你真的需要时才使用它.

注意:这将有效地阻止密码自动填充,因为FF将"拯救"的值#prevent_autofill(这是空的),并会尝试填充任何保存的密码存在,因为它总是使用第一个type="password"相应的"用户名"后,它发现在DOM输入输入.



8> Asik..:

我已经测试过在所有主流浏览器中在表单标记中添加autocomplete ="off".事实上,到目前为止,美国大多数人使用IE8.

    IE8,IE9,IE10,Firefox,Safari都运行良好.

    浏览器没有询问"保存密码".此外,以前保存的用户名和密码未填充.

    Chrome和IE 11不支持autocomplete ="off"功能

    FF支持autocomplete ="off".但有时会填充现有的已保存凭据.

2014年6月11日更新

最后,下面是一个使用javascript的跨浏览器解决方案,它在所有浏览器中都运行良好.

需要在登录表单中删除"表单"标记.在客户端验证之后,将该凭据放入隐藏表单并提交.

另外,添加两种方法.一个用于验证"validateLogin()",另一个用于监听输入事件,同时单击输入文本框/密码/按钮"checkAndSubmit()".因为现在登录表单没有表单标签,所以输入事件不在这里工作.

HTML

Username: Password:

使用Javascript

//For validation- you can modify as you like
function validateAndLogin(){
  var username = document.getElementById("username");
  var password = document.getElementById("password");

  if(username  && username.value == ''){
    alert("Please enter username!");
    return false;
  }

  if(password && password.value == ''){
    alert("Please enter password!");
    return false;
  }

  document.getElementById("hidden_username").value = username.value;
  document.getElementById("hidden_password").value = password.value;
  document.getElementById("HiddenLoginForm").submit();
}

//For enter event
function checkAndSubmit(e) {
 if (e.keyCode == 13) {
   validateAndLogin();
 }
}

祝好运!!!



9> Jason Buntin..:

不是真的 - 你唯一可以做的就是在网站上提供建议; 也许,在他们第一次登录之前,您可以向他们展示一个表单,其中包含的信息表明不建议他们允许浏览器存储密码.

然后,用户将立即按照建议,在便利贴上写下密码并将其粘贴到他们的监视器上.


你必须记住这是一个*政府*网站,这些东西都是政治上的.如果高涨的人说"它一定不能像这样工作",那么现实的不是等式的一部分.这个问题可能会转移到Post-It笔记上,但是这些问题的政策是针对不同的部门来处理 - 问题已经转移;-)而且我实际上是认真的.

10> 小智..:

我一直在做的是使用javascript/jQuery自动完成="关闭"和清除密码字段的组合.

jQuery示例:

$(function() { 
    $('#PasswordEdit').attr("autocomplete", "off");
    setTimeout('$("#PasswordEdit").val("");', 50); 
});

通过使用,setTimeout()您可以在清除之前等待浏览器完成该字段,否则浏览器将在您清除该字段后自动完成.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有