意外的 Chrome 自动填充行为 [禁用 chrome 自动填充]

Posted

技术标签:

【中文标题】意外的 Chrome 自动填充行为 [禁用 chrome 自动填充]【英文标题】:Unexpected Chrome Autofill Behaviour [disable chrome autofill] 【发布时间】:2019-04-10 06:31:29 【问题描述】:

所以和我之前的其他人一样,我正在尝试禁用 chrome 自动填充。

这向我解释了为什么自动完成off does not work:

用户代理可能允许用户覆盖元素的自动填充 字段名称,例如将其从“关闭”更改为“打开”以允许值 尽管页面作者反对,但仍被记住并预填,或 总是“关闭”,从不记住值。但是,用户代理应该 不允许用户轻易覆盖自动填充字段名称 “关”到“开”或其他值,因为有显着的安全性 如果始终记住所有值,则对用户的影响, 无论网站的偏好如何。

这应该是the solution:

在某些情况下,浏览器会不断提示自动完成值 即使自动完成属性设置为关闭。这出乎意料 行为对于开发人员来说可能非常令人费解。真正的诀窍 强制不完成是为属性分配一个随机字符串

默认行为

这是意料之中的。

自动完成关闭

这也是意料之中的。

自动完成为随机字符串

自动完成是不同的,但我仍然看到它,它来自 chrome。 (我禁用了我的扩展程序仅在 chrome 设置中关闭自动填充功能会阻止自动完成功能出现

谁能解释一下发生了什么,我该如何最终摆脱它? ????

编辑:

在相同形式的另一个输入中,autocomplete="off" 有效,autocomplete="radnomString!23123adf" 无效。将autocomplete 属性设置为form 元素没有帮助。 autocomplete="new-password" 也没有帮助。

【问题讨论】:

【参考方案1】:

从最近的 Chrome(绝对是版本 70)开始,autocomplete="off" 现在受到尊重,只要您的输入看起来不像用户个人资料、地址或信用卡数据。

另一方面,disablednope 或随机字符串等值似乎被忽略了。

Chrome 可能会忽略自动完成元素,因为您的输入名称是 individualName。自动填充逻辑由 Google 在服务器端完成,因此涉及很多启发式方法。

【讨论】:

对不起,我有 Chrome 版本 70.0.3538.110 并且 autocomplete="off" 不起作用,而 "nope" 效果更好。奇怪的。我还使用 Chrome 69 进行了测试。 @barbara.post,确保每个输入都有唯一的“名称”属性。 另外,我需要强调的是,Chrome 实际上会调用 Google 服务器来询问它是否应该自动填充。所以逻辑可以随时改变! autocomplete=off 仅解决自动完成问题。自动填充建议仍然出现在 Chrome 71 上【参考方案2】:

为了稍微补充一下 rjh 的回答,Chrome 不只是查看您要禁用自动完成功能的字段的名称/ID。它正在查看文本框附近的文本。因此,如果您有“名称:[txtRandomStringTextBox]”,它将假定 [txtRandomStringTextBox] 实际上是一个名称,并且它将继续推荐自动填充。不确定是否可以解决此问题。

虽然他们目前在 Chrome 70 .0.3538.102 中的实现不那么烦人,但如果能完全解决这个问题就更好了。

【讨论】:

【参考方案3】:

我在 Windows Chrome 上遇到了同样的问题。 Chrome 忽略了我关于自动完成的设置并做坏事。

在我使用Chrome version 70+ 的计算机上使用新保存的密码可以正常工作,但在Chrome version 70 之前创建的密码的计算机上无法按预期工作。 在使用设置等创建新密码和删除密码以及其他许多内容后,我的同伴从 AppData 中清除了 Chrome 缓存。现在它可以像计算机一样正常工作了。

Chrome 70 中的新功能 respect autocomplete=off 的更改似乎不会使用旧存储密码刷新缓存。 (感谢@rjh 的信息)

解决方案是删除 Chrome 缓存

C:\Users\<yourUser>\AppData\Local\Google\Chrome

希望对你有帮助。

【讨论】:

SOLUTION IS DELETE CHROME CACHE FROM ?我认为这不适用于使用我网站的人。 @Michal 我明白了。我有网络产品,而我的客户对此很麻烦。而且我并不是说它很好,而是它的 Chrome 更新错误,这在 3 天后找到了解决方案解决了我的问题。我希望它可以帮助某人。 Version 76.0.3809.87 在这里,这个解决方案不起作用。删除我的用户数据、重新启动 Chrome 并再次保存我的凭据后,我仍然将它们预填充在随机字段中【参考方案4】:

为了防止自动填充(不是自动完成),我使用了以下技巧:

<form>
  <input
    name="username"
    type="text"
    style="opacity: 0; position: fixed; width: 0; height: 0"
  />
  <input
    type="password"
    style="opacity: 0; position: fixed; width: 0; height: 0"
  />

  <input name="username" type="text" />
  <input type="password" />
</form>

【讨论】:

以上是关于意外的 Chrome 自动填充行为 [禁用 chrome 自动填充]的主要内容,如果未能解决你的问题,请参考以下文章

为 DropdownList 禁用 Chrome 自动填充

有没有办法为角度表单字段禁用 chrome 自动填充选项

如何使用 Chrome 禁用自动填充?

Yii:禁用 chrome 上用户名和密码字段的自动填充

在 Chrome 63 中禁用自动填充 [重复]

ASP.NET 为信用卡字段禁用 Chrome 自动填充