禁用自动填充
要禁用的表单自动填充,网页可以将 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"
当这个随机的值不是 可用值
的时候,浏览器就会放弃自动填充。
自动填充属性和登录
现代浏览器继承了密码管理:当用户使用用户名和密码在一个网站上登录了,浏览器会替用户记住它(用户名和密码)。当用户再次访问站点你的时候,浏览器会自动使用存储的数据自动填充登录模块。
另外,浏览器会让用户指定一个Master Password(此处可以理解为主密码、解锁密码)用来加密存储中的登录信息。
即使没有主密码,浏览器的密码管理起通常也被视为是安全的。由于用户不需要浏览器存储密码,因此他们可以选择比其他密码更强大的密码
由于这个原因,许多现代浏览器都不支持在登录模块中设置 autocomplete="off"
:
- 如果一个网站为表单设置了
autocomplete="off"
,如果表单包含了用户名和密码,浏览器依然会记住登录信息,并且如果用户同意,浏览器会在下一次用户访问网站的时候自动填充信息。 - 如果网站给用户名和密码的输入框设置了
autocomplete="off",浏览器依然会记住这次登录,如果用户同意,浏览器将会在用户下次访问的时候自动填充登录信息。
这种行为存在与Firefox(38+)、Google Chrome(34+)、Internet Explorer(11+)上。
如果想要阻止在用户管理页面中填写密码字段,用户可以为自己以外的人指定新的密码,虽然所有的浏览器都还不支持,但是autocomplete = "new-password"应该被指定。