How to Turn Off Form Autocompletion

本文介绍了网站如何禁用表单字段的自动完成功能。

默认情况下,浏览器会记录用户网页上提交的输入框的信息。这样浏览器便能够做到自动完成(在用户开始输入的时候给用户提供可能的内容)和自动填充(在加载的时候预先填充某些字段)功能。

这些功能可能设计用户的隐私,因此浏览器让用户可以禁用它(自动完成或自动填充),(不幸的是)它们默认是启用的。当然,许多提交的表单信息并不见得是有用的(例如:一次性的身份验证码-我把它理解为验证码)或是某些敏感信息(例如政府分发的身份识别码和信用卡安全码-我把它理解为身份证号和信用卡安全码)。即使浏览器的自动填充出去开启状态,网站(提供商)可能也不是那么喜欢浏览器记住这些字段的值。

禁用自动填充

要禁用(浏览器)的表单自动填充,网页可以将 autocomplete 的属性设置为 "off":

autocomplete="off"

网站可以为整个表单设置或单独设置:

<form method="post" action="/form" autocomplete="off">
[…]
</form>
<form method="post" action="/form">
  […]
  <div>
    <label for="cc">信用卡:</label>
    <input type="text" id="cc" name="cc" autocomplete="off">
  </div>
</form>

在这里设置 autocomplete="off" 会有两种效果:

  • 它会阻止浏览器为了以后自动完成类似的表单来自动保存表单数据,但是浏览器是不一样的。
  • 它会阻止浏览器历史记录缓存中的表单数据。当表单数据来自缓存的时候,当用户点击返回按钮来返回的时候,用户填写的信息是可见的。

在某些情况下,即使浏览器的自动填充设置为off,浏览器依然会继续提示自动完成的值。这可能会让开发者百思不得其解。强制浏览器不自动填充的方法是为autocomplete设置一个随机的字符串,例如:

autocomplete="nope"

当这个随机的值不是 valid one的时候,浏览器就会放弃自动填充。

自动填充属性和登录

现代浏览器继承了密码管理:当用户使用用户名和密码在一个网站上登录了,浏览器会替用户记住它(用户名和密码)。当用户再次访问站点你的时候,浏览器会自动使用存储的数据自动填充登录模块。

另外,浏览器会让用户指定一个Master Password(此处可以理解为主密码、解锁密码)用来加密存储中的登录信息。

及时没有主密码,浏览器的密码管理起通常也被视为是安全的。由于用户不需要浏览器存储密码,因此他们可以选择比其他密码更强大的密码

由于这个原因,许多现代浏览器都不支持在登录模块中设置 autocomplete="off"

  • 如果一个网站为表单设置了autocomplete="off",如果表单包含了用户名和密码,浏览器依然会记住登录信息,并且如果用户同意,浏览器会在下一次用户访问网站的时候自动填充信息。
  • 如果网站给用户名和密码的输入框设置了autocomplete="off",浏览器依然会记住这次登录,如果用户同意,浏览器将会在用户下次访问的时候自动填充登录信息。

这种行为存在与Firefox(38+)、Google Chrome(34+)、Internet Explorer(11+)上。

如果想要阻止在用户管理页面中填写密码字段,用户可以为自己以外的人指定新的密码,虽然所有的浏览器都还不支持,但是autocomplete = "new-password"应该被指定。

文档标签和贡献者

 此页面的贡献者: 1010Tech, xgqfrms-GitHub
 最后编辑者: 1010Tech,