Windows下Chrome 63忽略了autocomplete="new-password"。

12

我在我的asp.net网站中有以下测试页面:

<html>
<body>
    <form autocomplete="off">
        <input type="password" name="password" autocomplete="new-password">
    </form>
</body>
</html>

尽管表单的 autocomplete 属性设置为 off,密码字段的属性设置为 new-password,但 Chrome 63.0.3239.132 Windows 仍然显示一个下拉列表,供用户选择密码。

根据 此文档,上述设置应足以禁用密码自动填充。怎样才能禁用密码自动填充呢?

1个回答

12

Chrome/Chromium开发人员已确定,他们将忽略autocomplete="off"的值,而是优先考虑在消费者网站上提高可用性,这些网站的开发人员过于/天真地添加了autocomplete="off"属性,以便用户可以轻松地重复使用值。

这与规范相违背,并且有几个未解决的错误正在讨论此问题,但Google似乎不愿意妥协。

为了解决这个问题,您需要将所有autocomplete属性设置为非预期值。如果这样做,Chrome将遵守它们。(基本上它没有匹配项,所以它不会显示任何内容)

例如:

<!doctype html>
<html>
<body>
  <form autocomplete="do-not-show-ac">
    <input type="password" name="password" autocomplete="do-not-show-ac"/>
  </form>
</body>
</html>

当浏览器供应商不遵循规范时,情况很糟糕,但至少对于所有显示自动完成信息没有意义或者是明显的安全违规的情况都有一种解决方法。


4
谢谢@scunliffe!即使使用autocomplete="do-not-show-ac",我的表格仍然会自动完成。即使您以上发布的代码也会显示自动完成。这太令人沮丧了! - Yogster
1
我遇到的问题是,我不希望密码自动完成的字段是“密码确认”字段,以执行需要双重检查用户身份的操作。登录页面启用了自动完成,因此我们将始终保存值。最终,我复制了一个密码字段作为标准文本输入,并将其值放入隐藏字段中并掩盖字符,以便它表现为密码字段。这很可怕,但我需要快速解决! - Yogster
1
截至2018年4月5日,如果我在HTML中将自动完成属性值设置为“非标准”值仍然存在问题。使用开发工具,我注意到Chrome在渲染时会将其更改回“关闭”。这个解决方法最终解决了问题,但我认为它是一个相当笨拙的修复方法(还使用了jQuery):$(“input [type ='text']”)。focus(function(){ $(this).removeAttr(“自动完成”)。attr(“自动完成”,“新密码”); }); - Chason Arthur
1
2020年依旧如此。 - m1ld
4
看起来Chrome不再将"new-password"应用于除密码输入类型以外的任何字段。这种竞争必须停止。 - Ray Suelzer
显示剩余2条评论

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