跨浏览器禁用密码缓存技术

12

保存和自动归档用户名/密码是大多数现代浏览器的功能。用户通常可以选择按域名禁用此功能。但是,网站本身是否有标准方法来防止密码缓存呢?

重点在于跨浏览器,因此如果必要的话,我会采用多个并行机制。

(我曾看到在存在非标准登录字段的情况下,例如,额外的隐藏密码字段,缓存被有效地禁用。但我不想依赖于可能在未来意外更改其行为的副作用。)

相反,是否存在没有任何禁用功能实现密码缓存的浏览器/版本?


你到底想要实现什么?是强制用户记住密码,还是防止攻击者从用户端获取存储的密码? - PolyThinker
1
我的任务不是去思考为什么,而是去实现和部署(但可能更多是后者)。客户:http://www.disa.mil/ - Chris Noe
1
你应该只使用CAC ;) - erickson
5个回答

11
在您的元素中添加autocomplete =“off”。在所有现代浏览器中都有效(据我所知)。

啊,我本来期望的是类似于cache=off这样的东西。我得测试一下确保密码不会被存储到磁盘上,而只是从自动完成中排除掉... - Chris Noe
2
仅供参考,微软决定Internet Explorer 11不再支持在input type="password"字段中使用autocomplete="off"。http://msdn.microsoft.com/en-us/library/ie/ms533486%28v=vs.85%29.aspx - JW Lim

1
我想浏览器在提交表单时会保存表单的字段。如果您使用AJAX获取密码字段的值,发送它,然后清除该字段,那么表单实际上永远不会被提交,因此浏览器理论上永远没有机会保存这些值。

1
有人对这个答案进行过测试吗?我喜欢这个理论,只是想知道它是否正确。 - gnarf

0
只需在用户名和密码之间添加另一个密码字段,并将样式设置为display none即可。
<!-- Username label and text here> ... <--!>
<input type="password" id='txtPasswordDud' style='display: none;' />
<!-- Actual Password label and text here> ... <--!>

0

给密码输入框分配一个只有您能识别的随机生成的名称。将该名称存储在一个隐藏字段中,然后使用它来获取插入的密码。这样,即使浏览器缓存了密码,下次用户访问时也无法重新显示它。

此时,您的用户很可能会将密码缓存在显示器侧面的便笺上,但这实际上是完全不同的问题。

相同的方法对抗垃圾邮件也很有效,因为大多数机器人都依赖于查找常见的字段名称。


1
有趣。但浏览器最终仍会将密码存储在用户的磁盘上,这对我们来说是一种安全漏洞。(哦,我同意你关于便笺理论的看法。) - Chris Noe

0
据我所知,掩码字段(显示“*”而不是您键入的符号)永远不会保存用于自动完成。您是否想防止用户在浏览器的密码保存设施中记住您网站的密码?

正确,防止存储在密码保存设施中。 - Chris Noe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接