如何禁用Web表单域/输入标签上的浏览器自动完成功能?

如何禁用主要浏览器中的特定input (或form field )的autocomplete


Firefox 30会忽略密码的autocomplete="off" ,选择提示用户密码是否应存储在客户端。 请注意2014年5月5日发表的以下评论:

  • 密码管理器总是提示是否要保存密码。 密码未经用户许可不得保存。
  • 在IE和Chrome之后,我们是第三个实现这一改变的浏览器。
  • 根据Mozilla开发者文档,表单元素属性autocomplete可防止表单数据在旧浏览器中缓存。

    <input type="text" name="foo" autocomplete="off" />
    

    除了autocomplete=off ,您还可以通过生成页面的代码来随机化表单域名称,也许可以通过在名称末尾添加一些会话特定的字符串。

    提交表单时,您可以先关闭该部分,然后在服务器端处理它们。 这将阻止Web浏览器为您的字段查找上下文,并且可能有助于防止XSRF攻击,因为攻击者无法猜测表单提交的字段名称。


    大多数主要的浏览器和密码管理器(正确的,恕我直言)现在忽略autocomplete=off

    为什么? 出于安全目的,许多银行和其他“高安全性”网站为其登录页面添加了autocomplete=off ,但这实际上降低了安全性,因为它会导致人们在这些高安全性网站上更改密码以易于记忆(并因此破解),因为自动完成功能已损坏。

    很久以前,大多数密码管理器开始忽略autocomplete=off ,现在浏览器开始只为用户名/密码输入做同样的事情。

    不幸的是,自动完成实现中的错误会将用户名和/或密码信息插入到不适当的表单域中,导致表单验证错误,或者更糟糕的是,意外地将用户名插入用户故意留空的域中。

    什么是Web开发人员要做的事情?

  • 如果您可以自己保留页面上的所有密码字段,那么这是一个很好的开始,因为密码字段的存在似乎是用户/传递自动完成的主要触发器。否则,请阅读下面的提示。
  • 在这种情况下, Safari注意到有2个密码字段并禁用自动完成功能,前提是它必须是更改密码表单,而不是登录表单。 因此,只要确保在允许的情况下使用2个密码字段(新的并确认新的)就可以使用任何表单
  • 不幸的是, Chrome 34只会在用户/通行证看到密码字段时尝试自动填充字段。 这是一个非常糟糕的错误,希望它们会改变Safari的行为。 但是,将其添加到表单的顶部似乎禁用了密码自动填充功能:

    <input type="text" style="display:none">
    <input type="password" style="display:none">
    
  • 我还没有彻底调查IE或Firefox,但如果其他人在评论中有信息,我会很乐意更新答案。

    链接地址: http://www.djcxy.com/p/683.html

    上一篇: How do you disable browser Autocomplete on web form field / input tag?

    下一篇: Validate decimal numbers in JavaScript