保存和自动归档用户名/密码是大多数现代浏览器的功能。并且用户通常可以选择在每个域的基础上禁用此功能。但是网站本身是否有防止密码缓存的标准方法?
这里的重点是跨浏览器,所以如果有必要我会使用多个并行机制。
(我已经看到在存在非标准登录字段的情况下有效地禁用了缓存,例如,额外的隐藏密码字段。但我宁愿不依赖其行为可能在未来意外改变的副作用。)
相反,是否有浏览器/版本在没有任何禁用功能的情况下实现密码缓存?
添加autocomplete="off"
到您的<input>
元素中。适用于所有现代浏览器,IIRC。
我想浏览器在提交表单时会保存表单的字段。如果您使用 AJAX 获取密码字段的值,发送它,然后清除该字段怎么办?表单实际上永远不会被提交,因此理论上浏览器永远没有机会保存这些值。
为密码输入一个随机生成的名称,只有您可以识别。例如,将该名称存储在隐藏字段中,然后使用该名称获取插入的密码。这样,即使浏览器确实缓存了密码,下次用户访问时也无法将其恢复。
此时,您的用户可能会继续将密码缓存在显示器侧面的便利贴上,但这确实是一场完全不同的战斗。
同样的方法对垃圾邮件也很有效,因为大多数机器人都依赖于查找常见的字段名称。
AFAIK,屏蔽字段(显示“*”而不是您键入的符号的字段)永远不会保存用于自动完成。您想防止用户在浏览器的密码保存工具中记住您网站的密码吗?
只需在用户名和密码之间添加另一个密码字段并将样式设置为不显示。
<!-- Username label and text here> ... <--!>
<input type="password" id='txtPasswordDud' style='display: none;' />
<!-- Actual Password label and text here> ... <--!>